簡體   English   中英

如何從 RecyclerView 適配器檢索項目計數到另一個活動(不是父活動)?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM