关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击
Posted
技术标签:
【中文标题】关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击【英文标题】:About opening a new activity in respond to a click on a RecyclerView item which is inside of a fragment 【发布时间】:2021-10-10 11:37:43 【问题描述】:我正在将一些数据从 Firebase 实时数据库加载到 RecyclerView
。这个RecyclerView
在一个片段中,我想在单击一个项目时打开一个新活动。但是,当我将 onClickListener
从适配器添加到项目时,应用程序甚至无法识别我的点击。我不确定我在这里做错了什么,因为当 RecyclerView
在正常活动中时,此方法可以正常工作。
这是我大学的一个项目,我应该明天提交。所以我真的需要一些帮助。
这是我的数据适配器类,
public class Adapter_NoLimit extends RecyclerView.Adapter<Adapter_NoLimit.LViewHolder>
Context context;
ArrayList<Helper> list_nl;
public Adapter_NoLimit(Context context, ArrayList<Helper> list_nl)
this.context = context;
this.list_nl = list_nl;
@NonNull
@Override
public Adapter_NoLimit.LViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
View v = LayoutInflater.from(context).inflate(R.layout.itemlist, parent, false);
return new LViewHolder(v);
@Override
public void onBindViewHolder(@NonNull Adapter_NoLimit.LViewHolder holder, int position)
//final Helper temp = list_nl.get(position);
String fname_txt = list_nl.get(position).getFname();
String catg_txt = list_nl.get(position).getSpin();
String prof_img = list_nl.get(position).getProfile_url();
holder.setUsers(fname_txt, catg_txt, prof_img);
holder.f_name.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Intent i = new Intent(activity, UserProfile_VV.class);
i.putExtra("full name", fname_txt);
activity.startActivity(i);
);
@Override
public int getItemCount()
return list_nl.size();
public class LViewHolder extends RecyclerView.ViewHolder
private TextView f_name, catG;
private ImageView profile_pic;
public LViewHolder(@NonNull View itemView)
super(itemView);
f_name = itemView.findViewById(R.id.username_view);
catG = itemView.findViewById(R.id.category_view);
profile_pic = itemView.findViewById(R.id.userimage);
public void setUsers(String fname_txt, String catg_txt, String prof_img)
f_name.setText(fname_txt);
catG.setText(catg_txt);
Picasso.get().load(prof_img).fit().into(profile_pic);
这是片段之一,
public class Beauty_Frag extends Fragment
RecyclerView recyclerView;
DatabaseReference reference, user_ref;
ArrayList<Helper> list;
Adapter adapter;
FirebaseAuth auth;
String uid;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_beauty, container, false);
recyclerView = v.findViewById(R.id.beauty_recycler_frag);
reference = FirebaseDatabase.getInstance().getReference();
user_ref = reference.child("users");
auth = FirebaseAuth.getInstance();
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
//searchField = findViewById(R.id.search_field);
list = new ArrayList<>();
adapter = new Adapter(getContext(), list);
recyclerView.setAdapter(adapter);
user_ref.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull /*@org.jetbrains.annotations.NotNull*/ DataSnapshot snapshot)
for (DataSnapshot key : snapshot.getChildren())
if( key.child("spin").getValue().toString().equals("Beauty"))
Helper helper = key.getValue(Helper.class);
list.add(helper);
adapter.notifyDataSetChanged();
@Override
public void onCancelled(@NonNull /*@org.jetbrains.annotations.NotNull*/ DatabaseError error)
);
return v;
如果您有任何解决方案,非常欢迎您。
【问题讨论】:
【参考方案1】:对 onClicklistner 使用以下代码:
holder.f_name.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent i = new Intent(context, UserProfile_VV.class);
i.putExtra("full name", fname_txt);
context.startActivity(i);
);
【讨论】:
以上是关于关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击的主要内容,如果未能解决你的问题,请参考以下文章