Member 13943961 Ответов: 0

Как мне это сделать, то есть когда я нажимаю на элемент в recyclerview, он должен получить данные из firebase и показать их в следующем действии?


это мой класс recyclerview,где у меня есть электрик,сантехник, сварщик и т. д. В качестве моих элементов recyclerview.я хочу, чтобы всякий раз, когда пользователь нажимает на любой из этих элементов, соответствующие данные, которые повторно извлекаются из firebase, должны быть показаны в следующем действии..

package com.example.hp.dc_project;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/** * Created by HP on 20-07-2018. */public class RecyclerViewAdapter extends 
RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder>{

private Context mContext;
private List<category> mdata;

public RecyclerViewAdapter(Context context, List<category> mdata) {
    this.mContext = context;
    this.mdata = mdata;
}

@Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view;
    LayoutInflater mInflater = LayoutInflater.from(mContext);
    view = mInflater.inflate(R.layout.cardview_category,parent,false);
    return new MyViewHolder(view);
}

@Override    public void onBindViewHolder(MyViewHolder holder, int position) {

    holder.tv.setText(mdata.get(position).getName());
    holder.iv.setImageResource(mdata.get(position).getThumnail());
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override            public void onClick(View v) {
            Intent i = new Intent(mContext.getApplicationContext(),available_worker.class);
            mContext.startActivity(i);
        }
    });

}

@Override    public int getItemCount() {
    return mdata.size();
}

public static class MyViewHolder extends RecyclerView.ViewHolder{

    TextView tv;
    ImageView iv;
    CardView cardView;

    public MyViewHolder(View itemView){
        super(itemView);

        tv = (TextView)itemView.findViewById(R.id.tv_category);
        iv = (ImageView)itemView.findViewById(R.id.iv_category);
        cardView = (CardView)itemView.findViewById(R.id.cardview);
    }
}
}


Что я уже пробовал:

это класс activity, в котором я хочу отобразить listview, содержащий данные, полученные из firebase после нажатия на элементы recyclerview..
package com.example.hp.dc_project;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class available_worker extends AppCompatActivity {
private ListView lv;
private FirebaseDatabase database;
private ArrayList<String>list;
private ArrayAdapter<String>adapter;
private Electrician elec;
//  adapter = new ArrayAdapter<Electrician>(this,R.layout.list_of_work    @Override    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_available_worker);
    lv = (ListView)findViewById(R.id.listView_workeravailable);
    elec = new Electrician();
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override            public void onItemClick(AdapterView<?>parent, View view, int position, long id) {
            Intent i = new Intent(available_worker.this,WorkerProfile.class);
            startActivity(i);
        }
    });
    list =new ArrayList<>();
    adapter = new ArrayAdapter<String>(this,R.layout.list_of_worker,R.id.employeeadd );
    database = FirebaseDatabase.getInstance();
    DatabaseReference rootref = database.getReference();
    DatabaseReference electricianref = rootref.child("Employee").child("Electrician");
    electricianref.addValueEventListener(new ValueEventListener() {
        @Override            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                String fName = ds.child("Fname").getValue(String.class);
                String lName = ds.child("Lname").getValue(String.class);
                String address = ds.child("Address").getValue(String.class);
                list.add(fName);
                list.add(lName);
                list.add(address);
            }
        }

        @Override            public void onCancelled(@NonNull DatabaseError databaseError) {

        }
});
} }

David Crow

Ладно, так в чем же именно проблема? Вы использовали отладчик, чтобы пройти через available_worker класс?

0 Ответов