Android 如何以不同的方式在两个活动中使用同一适配器
是否可以在两个活动中为不同的工作调用相同的适配器 这是我的回收适配器: 从两个活动调用时的唯一区别在于此行:从Activity1.java它是:Android 如何以不同的方式在两个活动中使用同一适配器,android,Android,是否可以在两个活动中为不同的工作调用相同的适配器 这是我的回收适配器: 从两个活动调用时的唯一区别在于此行:从Activity1.java它是: holder.Name.setText(arrayList.get(position).getName()); 和来自Activity2.java的 holder.Name.setText(arrayList.get(position).getVehicle()); 所有其他的代码都是一样的,我怎样才能在不同的工作中
holder.Name.setText(arrayList.get(position).getName());
和来自Activity2.java的
holder.Name.setText(arrayList.get(position).getVehicle());
所有其他的代码都是一样的,我怎样才能在不同的工作中使用相同的适配器呢
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {
private ArrayList<Contact> arrayList= new ArrayList<>();
public RecyclerAdapter(ArrayList<Contact> arrayList){
this.arrayList= arrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder (MyViewHolder holder, int position) {
holder.Name.setText(arrayList.get(position).getName());
int sync_status = arrayList.get(position).getSync_status();
if(sync_status== DbContact.SYNC_STATUS_OK){
holder.Sync_Status.setImageResource(R.drawable.success);
}
else {
holder.Sync_Status.setImageResource(R.drawable.stopwatch);
}
}
@Override
public int getItemCount() {
return arrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
ImageView Sync_Status;
TextView Name;
public MyViewHolder(View itemView) {
super(itemView);
Sync_Status=(ImageView)itemView.findViewById(R.id.imgSync);
Name=(TextView)itemView.findViewById(R.id.txtName);
}
}
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{
私有ArrayList ArrayList=新ArrayList();
公共回收适配器(ArrayList ArrayList){
this.arrayList=arrayList;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.item_视图,parent,false);
返回新的MyViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
holder.Name.setText(arrayList.get(position.getName());
int sync_status=arrayList.get(position.getSync_status();
if(sync_status==DbContact.sync_status_OK){
holder.Sync_Status.setImageResource(R.drawable.success);
}
否则{
holder.Sync_Status.setImageResource(R.drawable.stopwatch);
}
}
@凌驾
public int getItemCount(){
返回arrayList.size();
}
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{
ImageView同步状态;
文本视图名称;
公共MyViewHolder(查看项目视图){
超级(项目视图);
Sync_Status=(ImageView)itemView.findViewById(R.id.imgSync);
Name=(TextView)itemView.findViewById(R.id.txtName);
}
}
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{
私有ArrayList ArrayList=新ArrayList();
私人智力活动;
公共回收适配器(ArrayList ArrayList,int活动){
活动=活动;
this.arrayList=arrayList;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.item_视图,parent,false);
返回新的MyViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
如果(whichActivity==0){
holder.Name.setText(arrayList.get(position.getName());
}
否则{
holder.Name.setText(arrayList.get(position.getVehicle());
}
int sync_status=arrayList.get(position.getSync_status();
if(sync_status==DbContact.sync_status_OK){
holder.Sync_Status.setImageResource(R.drawable.success);
}
否则{
holder.Sync_Status.setImageResource(R.drawable.stopwatch);
}
}
@凌驾
public int getItemCount(){
返回arrayList.size();
}
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{
ImageView同步状态;
文本视图名称;
公共MyViewHolder(查看项目视图){
超级(项目视图);
Sync_Status=(ImageView)itemView.findViewById(R.id.imgSync);
Name=(TextView)itemView.findViewById(R.id.txtName);
}
}
}
试试这个代码。现在,当您在活动1中创建RecyclerAdapter时,请调用new RecyclerAdapter(arrayList,0);当您在活动2中创建RecyclerAdapter时,请调用new RecyclerAdapter(arrayList,1)。您只是将一个变量传递到构造函数中,以便适配器知道它在哪个活动中,并且可以根据该活动运行不同的逻辑
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {
private ArrayList<Contact> arrayList= new ArrayList<>();
private int whichActivity;
public RecyclerAdapter(ArrayList<Contact> arrayList, int activity){
whichActivity = activity;
this.arrayList= arrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder (MyViewHolder holder, int position) {
if(whichActivity == 0) {
holder.Name.setText(arrayList.get(position).getName());
}
else {
holder.Name.setText(arrayList.get(position).getVehicle());
}
int sync_status = arrayList.get(position).getSync_status();
if(sync_status== DbContact.SYNC_STATUS_OK){
holder.Sync_Status.setImageResource(R.drawable.success);
}
else {
holder.Sync_Status.setImageResource(R.drawable.stopwatch);
}
}
@Override
public int getItemCount() {
return arrayList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
ImageView Sync_Status;
TextView Name;
public MyViewHolder(View itemView) {
super(itemView);
Sync_Status=(ImageView)itemView.findViewById(R.id.imgSync);
Name=(TextView)itemView.findViewById(R.id.txtName);
}
}
}