3 回答

TA貢獻1803條經(jīng)驗 獲得超6個贊
您可以創(chuàng)建一個接口并在兩個活動中實現(xiàn)它,然后為這兩個活動編寫意圖代碼。然后,您可以使用在適配器構(gòu)造函數(shù)中傳遞的上下文從適配器調(diào)用接口方法。

TA貢獻1788條經(jīng)驗 獲得超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條經(jīng)驗 獲得超10個贊
您可以這樣做:
首先在您的適配器中聲明一些接口并將其分配給 itemClick
并在創(chuàng)建您的適配器時發(fā)送您的自定義點擊事件
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);
}
}
}
添加回答
舉報