Android 单击recyclerView时如何从firestore获取数据

Android 单击recyclerView时如何从firestore获取数据,android,android-recyclerview,google-cloud-firestore,Android,Android Recyclerview,Google Cloud Firestore,我已经将数据从firestore检索到RecyclerView,然后我需要单击我的RecyclerView并显示我单击以创建新活动的数据。如何获取数据 这是主要活动的代码 List<FoodModel>models; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a

我已经将数据从
firestore
检索到
RecyclerView
,然后我需要单击我的
RecyclerView
并显示我单击以创建新活动的数据。如何获取数据

这是主要活动的代码

List<FoodModel>models;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = findViewById(R.id.recycler_home);

    db = FirebaseFirestore.getInstance();

    getData();
}

public void getData(){

    models = new ArrayList<>();

    db.collection("Food").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot documentSnapshots) {

            if (!documentSnapshots.isEmpty()){
            for (DocumentSnapshot docSnap: documentSnapshots.getDocuments()) {
                FoodModel model = docSnap.toObject(FoodModel.class);
                models.add(model);

                foodAdapter = new FoodAdapter(models, getApplicationContext(), new FoodAdapter.OnFoodClick() {
                    @Override
                    public void OnClick(FoodModel food) {

                        Intent intent = new Intent(MainActivity.this, FoodActivity.class);
                        startActivity(intent);

                    }
                });

                recyclerView.setAdapter(foodAdapter);
                recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false));
            }
                }
        }

    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {

        }
    });
}

}

制作一个界面来处理回收者视图点击事件,如下所示。。 将下面的代码定义到适配器中

 onItemClickListner onItemClickListner;

public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
    this.onItemClickListner = onItemClickListner;
}

public interface onItemClickListner {
    void onClick(String str);//pass your object types.
}

@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
    // below code handle click event on recycler view item.
    String data=mStringList.get(position);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClickListner.onClick(data);
        }
    });
}
然后在活动适配器绑定到回收器视图后,调用此方法以获取回收器视图上的单击项

   recyclerViewAdpater.setOnItemClickListner(new RecyclerViewAdpater.onItemClickListner() {
        @Override
        public void onClick(String str) {
            Log.d("Click Value",str);
        }
    });

若要在用户单击某个项目时显示toast消息,请查看我的最后一部分答案。您是否可以发布
FoodModel
类。您可能会遇到异常。尝试使用
e.printStackTrace()
将异常发布到logcat,并将结果发布到此处。@M.WaqasPervez已经发布了FoodModel为什么要为每个模型对象创建新的FoodAdapter?
public class FoodModel {

String foodName;
String type;
String price;

public FoodModel() {
}

public String getFoodName() {
    return foodName;
}

public void setFoodName(String foodName) {
    this.foodName = foodName;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getPrice() {
    return price;
}

public void setPrice(String price) {
    this.price = price;
}
 onItemClickListner onItemClickListner;

public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
    this.onItemClickListner = onItemClickListner;
}

public interface onItemClickListner {
    void onClick(String str);//pass your object types.
}

@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
    // below code handle click event on recycler view item.
    String data=mStringList.get(position);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClickListner.onClick(data);
        }
    });
}
   recyclerViewAdpater.setOnItemClickListner(new RecyclerViewAdpater.onItemClickListner() {
        @Override
        public void onClick(String str) {
            Log.d("Click Value",str);
        }
    });