3 回答
TA贡献1788条经验 获得超4个赞
尝试这个
适配器类:
public abstract class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<ListItem> listItems;
private Context context;
public MyAdapter(List<ListItem> listItems, Context context) {
this.listItems = listItems;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_recyclerview, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
ListItem listItem = listItems.get(position);
viewHolder.textViewHeader.setText(listItem.getFirstText());
viewHolder.textViewDescription.setText(listItem.getSecondText());
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewHeader, textViewDescription;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textViewDescription = itemView.findViewById(R.id.firstText);
textViewHeader = itemView.findViewById(R.id.secondText);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClick(getAdapterPosition());
}
});
}
}
public abstract void onItemClick(int pos);
}
词汇活动:
MyAdapter mAdapter = new MyAdapter(mList, this) {
public void onItemClick(int position) {
// your intent
}
};
练习活动:
MyAdapter mAdapter = new MyAdapter(mList, this) {
public void onItemClick(int position) {
// your intent
}
};
TA贡献1906条经验 获得超10个赞
您可以这样做:
首先在您的适配器中声明一些接口并将其分配给 itemClick
并在创建您的适配器时发送您的自定义点击事件
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
public interface OnItemClickListener {
void onItemClick(View view, ListItem item);
}
private List<ListItem> listItems;
private Context context;
private OnItemClickListener mClickListener;
public MyAdapter(List<ListItem> listItems, Context context, OnItemClickListener listener) {
this.listItems = listItems;
this.context = context;
this.mClickListener= listener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_recyclerview,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder,final int position) {
ListItem listItem=listItems.get(position);
viewHolder.textViewHeader.setText(listItem.getFirstText());
viewHolder.textViewDescription.setText(listItem.getSecondText());
if(mClickListener !=null)
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(v, listItem);
}
});
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public TextView textViewHeader,textViewDescription;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textViewDescription=itemView.findViewById(R.id.firstText);
textViewHeader=itemView.findViewById(R.id.secondText);
}
}
}
添加回答
举报