gpt4 book ai didi

android - 使用相同的 Recycler Adapter 为不同的 Activity 充气

转载 作者:行者123 更新时间:2023-11-29 01:35:31 31 4
gpt4 key购买 nike

我有以下适配器

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder>{

List<String> list;
int id;
Context context;

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(id,parent,false);
return new ViewHolder(view);

}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.textView.setText(list.get(position));

holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(context, BESyllabus.class);
context.startActivity(intent);
}
},500);

}
});
}

@Override
public int getItemCount() {
return list.size();
}


public static class ViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public CardView cardView;
public ViewHolder(View v){
super(v);
textView=(TextView)v.findViewById(R.id.text);
cardView=(CardView)v.findViewById(R.id.card_view);
}
}

public CardAdapter(List<String> list, int id,Context context){
this.list=list;
this.id=id;
this.context=context;
}

}

我使用相同的布局文件,它有一个使用上述适配器的 recyclerView,id 是我用作回收 View 行的布局文件的资源 ID`

<?xml version="1.0" encoding="utf-8"?>

<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:alpha="0.87"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:textSize="35dp" />

我想要做的是使用相同的适配器使用相同的行结构来膨胀多个 Activity 。它在显示行时工作正常,但每次单击时每个 Activity 都使用相同的 onClickListener 重新启动相同的 Activity 。有没有办法使用相同的适配器,我可以根据 Activity 分配监听器。或者我应该为每个 Activity 创建新的适配器吗?我是 android 开发的新手,所以任何帮助将不胜感激。提前致谢。

最佳答案

使用接口(interface):

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder>{

private IOnItemClickListener mListener;

public CardAdapter(IOnItemClickListener mListener) {
this.mListener = mListener;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(id,parent,false);

return new ViewHolder(v, new CardAdapter.ViewHolder.IMyViewHolderClicks() {
public void onClick(View v, int position) {
mListener.onItemClick(v, position);
};
});

}

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView textView;
public CardView cardView;
public IMyViewHolderClicks mListener;

public ViewHolder(View v, IMyViewHolderClicks listener) {
super(itemView);
mListener = listener;

textView=(TextView)v.findViewById(R.id.text);
cardView=(CardView)v.findViewById(R.id.card_view);
}

@Override
public void onClick(View v) {
mListener.onClick(v, getPosition());
}

public interface IMyViewHolderClicks {
public void onClick(View v, int position);
}
}
}
public interface IOnItemClickListener {
public void onItemClick(View v, int position);
}

关于android - 使用相同的 Recycler Adapter 为不同的 Activity 充气,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413977/

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