В вашей функции onBindViewHolder
просто добавьте прослушиватель кликов, как показано ниже.
@Override
public void onBindViewHolder( FeedAdapter.FeedViewHolder holder, int position) {
String user=userdata[position];
String loc=locdata[position];
String time=timedata[position];
String status=statusdata[position];
int post=postdata[position];
holder.username.setText(user);
holder.locationa.setText(loc);
holder.timea.setText(time);
holder.statusa.setText(status);
if(post==0)
holder.postimg.setVisibility(View.GONE);
else
holder.postimg.setImageResource(post);
holder.username.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Do something.
}
});
}
Если вы хотите настроить прослушиватель щелчка для других элементов пользовательского интерфейса в элементе списка, просто объявите их так, как вы объявили username
, timea
, statusa
и т. Д.и затем добавьте слушателя к нему.
Имейте в виду, что для того, чтобы сделать ImageView
кликабельным, вам нужно добавить атрибут clickable
к true
в вашем файле макета.Например, если вам нужно, чтобы ваше изображение было кликабельным, вам нужно добавить атрибут clickable
, как показано ниже.
<ImageView
android:id="@+id/like_image"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/like"/>
Чтобы показать Toast
при нажатии на элемент, вам нужно иметь Context
действия Discussion
во время создания адаптера.Поэтому я хотел бы предложить вам изменить конструктор адаптера следующим образом.
public class FeedAdapter extends
RecyclerView.Adapter<FeedAdapter.FeedViewHolder> {
private String[] userdata;
private String[] locdata;
private String[] timedata;
private int[] postdata;
private String[] statusdata;
// Add another extra variable to store context
// The context is necessary for showing toast
private Context context;
public FeedAdapter(String[] userdata, String[] locdata,String[] timedata, String[] statusdata, int[] postdata, Context context){
this.userdata = userdata;
this.locdata = locdata;
this.postdata = postdata;
this.statusdata = statusdata;
this.timedata = timedata;
this.context = context; // Initialize it here
}
@Override
public FeedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater=LayoutInflater.from(parent.getContext());
View view =inflater.inflate(R.layout.backupofcontent,parent,false);
return new FeedViewHolder(view);
}
@Override
public void onBindViewHolder( FeedAdapter.FeedViewHolder holder, int position) {
String user=userdata[position];
String loc=locdata[position];
String time=timedata[position];
String status=statusdata[position];
int post=postdata[position];
holder.username.setText(user);
holder.locationa.setText(loc);
holder.timea.setText(time);
holder.statusa.setText(status);
if(post==0)
holder.postimg.setVisibility(View.GONE);
else
holder.postimg.setImageResource(post);
// Use the context here to show the Toast
holder.username.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "Something", Toast.LENGTH_LOGN).show();
}
});
}
@Override
public int getItemCount() {
return userdata.length;
}
public class FeedViewHolder extends RecyclerView.ViewHolder{
ImageView postimg;
TextView username;
TextView locationa;
TextView timea;
TextView statusa;
public FeedViewHolder(View itemView) {
super(itemView);
postimg=itemView.findViewById(R.id.imgView_postPic);
username=itemView.findViewById(R.id.user_name);
locationa=itemView.findViewById(R.id.Location);
timea=itemView.findViewById(R.id.Time);
statusa=itemView.findViewById(R.id.post_text);
}
}
}
И чтобы принять изменения модифицированного конструктора, адаптер должен быть инициализирован, как показано ниже в вашем Discussion
классе.
mRecycleview.setAdapter(new FeedAdapter(use, lo, ti, staus, posimg, this));
Надеюсь, это поможет!