[英]How to retrieve item count from RecyclerView adapter into another activity(not parent activity)?
我一直在尝试将 recyclerview 适配器(TaskAdapter)中的项目数显示到一个活动(StatisticsActivity)中。 我是初学者,所以如果我表现出低水平的理解,我深表歉意。
统计活动:
public class StatisticActivity extends AppCompatActivity implements TaskAdapter{ TextView itemcount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_statistic); itemcount = findViewById(R.id.itemcount); itemcount.setText(myTask.size()); } }
任务适配器:
public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.MyViewHolder>{ Context context; ArrayList<MyTask> myTask; public TaskAdapter(Context c, ArrayList<MyTask> p) { context = c; myTask = p; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_task,viewGroup, false)); } @Override public int getItemCount() { return myTask.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView titletask, desctask, datetask, keytask; public MyViewHolder(@NonNull View itemView) { super(itemView); titletask = (TextView) itemView.findViewById(R.id.titletask); desctask = (TextView) itemView.findViewById(R.id.desctask); datetask = (TextView) itemView.findViewById(R.id.datetask); } } }
事情就是这样。 如果您在项目中的某个地方有一个适配器,并且您在一个活动中想要适配器所持有的列表的大小......那么这可能是不可能的。
但是,如果您有一个显示项目列表的 recyclerview,并且当您单击 recyclerview 中的一个项目时,如果您希望 go 到StatisticActivity
,则可以将列表中的项目数传递给StatisticActivity
。
为此,您需要在 Adapter 中使用和接口,并在StatisticActivity
中实现该接口。
在适配器中创建一个接口:
public interface OnItemClick {
void onClick (int size);
}
在StatisticActivity
中,从适配器实现接口。
public class StatisticActivity extends AppCompatActivity implements OnItemClick {
private int listSize;
......
......
@Override
void onClick (int size){
listSize = size; // this is your list size from adapter.
}
}
在适配器中
public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.MyViewHolder>{
Context context;
OnItemClick mCallback;
ArrayList<MyTask> myTask;
public TaskAdapter(Context c, ArrayList<MyTask> p, OnItemClick listener) {
context = c;
myTask = p;
this.mCallback = listener;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_task,viewGroup, false));
}
@Override
public int getItemCount() {
mCallback.onClick(myTask.size());
return myTask.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView titletask, desctask, datetask, keytask;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
titletask = (TextView) itemView.findViewById(R.id.titletask);
desctask = (TextView) itemView.findViewById(R.id.desctask);
datetask = (TextView) itemView.findViewById(R.id.datetask);
}
}
public interface OnItemClick {
void onClick (int size);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.