Android - 如何从 MainActivity 中的 RecyclerView 检索 EditText 值

新手上路,请多包涵

如何从 RecyclerView 在 MainActivity 中创建的所有 EditText 中检索值?

在我的 RecyclerView Adapter 中,我正在扩展我的内部类:

 public class MyPersonalAdapter extends RecyclerView.Adapter<MyPersonalAdapter.MyPersonalViewHolder>

我在该内部类中获得了对 EditText 的引用:

  class MyPersonalViewHolder extends RecyclerView.ViewHolder {

        TextView numberTextView;
        EditText nameEditText;

        public MyPersonalViewHolder(View itemView) {
            super(itemView);
            numberTextView = (TextView) itemView.findViewById(R.id.tv_number);
            nameEditText = (EditText) itemView.findViewById(R.id.et_name);
        }
    }

在我的 MainActivity 中,我想使用:

 for (int i = 0; i < count; i++) {
    String name = "Somehow get that name";
    cv.put(MyContract.MyEntry.COLUMN_NAME, "name");
}

原文由 Halfacht 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 558
2 个回答

得到它的工作,这里是编辑后的代码:

 mAdapter = new MyClassAdapter(this, mDataset.size);
mRecyclerView.setAdapter(mAdapter);
mRecyclerview.setItemViewCacheSize(mDataset.size());

List<ContentValues> list = new ArrayList<>();

for (int i = 0; i < mDataset.size(); i++) {
    View view = recyclerView.getChildAt(i);
    EditText nameEditText = (EditText) view.findViewById(R.id.et_name);
    String name = nameEditText.getText().toString();

    ContentValues cv = new ContentValues();
    cv.put(MyContract.MyEntry.COLUMN_NAME, name);
    list.add(cv)
}

// I encapsulated this in a try catch
for (ContentValues c:list) {
    mDb.insert(MyClassContract.MyClassEntry.TABLE_NAME, null, c);
}

原文由 Rajesh Peram 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个:

 for(int i=0;i<adapter.getItemCount();i++){
    MyPersonalViewHolder  viewHolder= (MyPersonalViewHolder )
    mRecyclerView.findViewHolderForAdapterPosition(i);
    EditText editText=viewHolder.nameEditText;
}

原文由 Firoz Jaroli 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题