Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何以不同的方式在两个活动中使用同一适配器_Android - Fatal编程技术网

Android 如何以不同的方式在两个活动中使用同一适配器

Android 如何以不同的方式在两个活动中使用同一适配器,android,Android,是否可以在两个活动中为不同的工作调用相同的适配器 这是我的回收适配器: 从两个活动调用时的唯一区别在于此行:从Activity1.java它是: holder.Name.setText(arrayList.get(position).getName()); 和来自Activity2.java的 holder.Name.setText(arrayList.get(position).getVehicle()); 所有其他的代码都是一样的,我怎样才能在不同的工作中

是否可以在两个活动中为不同的工作调用相同的适配器 这是我的回收适配器: 从两个活动调用时的唯一区别在于此行:从Activity1.java它是:

        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);
    }
}
}