gpt4 book ai didi

android - 如何在 Firebase 回收器适配器中实现 recyclerview ItemClickListener()?

转载 作者:行者123 更新时间:2023-11-29 22:45:04 26 4
gpt4 key购买 nike

我在 YouTube 上学习了本教程.
我设法搜索了数据,但现在我想在回收站 View 中打开所选数据的详细信息页面。我如何完成它?我应该在哪一部分为recyclerview 实现onClickListener?我试图将 onClickListener 放入方法 OnBindViewHolder 和 SetDetails 中, Intent 将额外的...放入方法 OnBindViewHolder 和 SetDetails 中,但它们都无法识别我的上下文。

这是我当前的代码:

    private void firebaseIngredientSearch(String searchIngredient) {

Toast.makeText(SearchActivity.this, "Started Search", Toast.LENGTH_LONG).show();

Query firebaseSearchQuery = databaseReference.orderByChild("ingName").startAt(searchIngredient).endAt(searchIngredient + "\uf8ff");

FirebaseRecyclerOptions<Ingredients> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Ingredients>()
.setQuery(firebaseSearchQuery, Ingredients.class)
.build();

FirebaseRecyclerAdapter<Ingredients, SearchActivity.IngredientsViewHolder> firebaseRecyclerAdapter = new
FirebaseRecyclerAdapter<Ingredients, SearchActivity.IngredientsViewHolder>(firebaseRecyclerOptions) {

@Override
protected void onBindViewHolder(@NonNull IngredientsViewHolder holder, int position, @NonNull final Ingredients model) {


holder.setDetails(model.getIngName(), model.getIngStatus(),model.getIngCategory(),model.getIngCategory());

holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent goDetail = new Intent(, IngredientSearchDetailsActivity.class);
goDetail.putExtra("ingName", model.getIngName());
goDetail.putExtra("ingStatus", model.getIngStatus());
goDetail.putExtra("ingCategory", model.getIngCategory());
goDetail.putExtra("ingDescription", model.getIngDescription());

mActivity.startActivity(goDetail);
}
});



}

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

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_searched_ingredient, parent, false);
return new IngredientsViewHolder(view);
}
};

firebaseRecyclerAdapter.startListening();
rvSearchResult.setAdapter(firebaseRecyclerAdapter);

}

////////////////////////////////////////////////////////////////////////////

public static class IngredientsViewHolder extends RecyclerView.ViewHolder {

View view;

public IngredientsViewHolder(@androidx.annotation.NonNull View itemView) {
super(itemView);
view = itemView;
}

public void setDetails(String ingName, String ingStatus, String ingCategory, String ingDescription) {

TextView i_Name = view.findViewById(R.id.tvName);
TextView i_Status = view.findViewById(R.id.tvStatus);
TextView i_Category = view.findViewById(R.id.tvCategory);
TextView i_Description = view.findViewById(R.id.tvDescription);
ImageView iv_Status = view.findViewById(R.id.searchStatusIv);

i_Name.setText(ingName);
i_Status.setText(ingStatus);
i_Category.setText(ingCategory);
i_Description.setText(ingDescription);

}

}

最佳答案

用户 holder.view.setOnClickListener 启动 OnClickListener 并使用 holder.view.getContext() 而不是 mActivity

holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent goDetail = new Intent(, IngredientSearchDetailsActivity.class);
goDetail.putExtra("ingName", model.getIngName());
goDetail.putExtra("ingStatus", model.getIngStatus());
goDetail.putExtra("ingCategory", model.getIngCategory());
goDetail.putExtra("ingDescription", model.getIngDescription());

holder.view.getContext().startActivity(goDetail);
}
});

关于android - 如何在 Firebase 回收器适配器中实现 recyclerview ItemClickListener()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com