[英]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.