【问题标题】:How to retrive all views data from Recyclerview Android at once如何一次从 Recyclerview Android 检索所有视图数据
【发布时间】:2021-04-15 06:54:25
【问题描述】:

我在我的 android 项目中有一个 recyclerview,并且在 recyclerview 中填充了任何项目的名称,并且它具有与 recyclerview 中的每个名称视图相对应的 EditText,这意味着该人可以编辑 recyclerview 中每个项目的价格。 现在在 recyclerview 之外,我有一个按钮,当单击该按钮时会调用 POST 请求,并更新名称及其相应的价格。 我找不到将所有数据从 recyclerview 获取回片段的方法。

我理解问题的示例代码

public class TestsListAdapterLabsInside extends RecyclerView.Adapter<TestsListAdapterLabs.MyHolder> {

        Context context;
        ArrayList<TestListLabRetro> arrayList;
        double[] TOTAL;

        public TestsListAdapterLabsInside(Context context, ArrayList<TestListLabRetro> arrayList) {
            this.context = context;
            this.arrayList = arrayList;
            this.TOTAL = new double[arrayList.size()];
        }

        @NonNull
        @Override
        public TestsListAdapterLabs.MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerview_test_labs2, viewGroup, false);

            return new TestsListAdapterLabs.MyHolder(v);
        }

        @Override
        public void onBindViewHolder(@NonNull app.dezignoo.knockadoc.Adapters.TestsListAdapterLabs.MyHolder myHolder, final int i) {

            myHolder.name.setText(arrayList.get(i).getName());
            myHolder.slno.setText(String.valueOf(i + 1));

            myHolder.price.setText(arrayList.get(i).getPrice());

        }

        @Override
        public int getItemCount() {
            return arrayList.size();
        }


        public class MyHolder extends RecyclerView.ViewHolder {

            TextView slno, name;
            TextView price;

            public MyHolder(View itemView) {
                super(itemView);

                name = itemView.findViewById(R.id.testName);
                slno = itemView.findViewById(R.id.slno);
                price = itemView.findViewById(R.id.testPrice);
            }
        }

    }

此适配器在我的片段下方定义。 我希望片段中 recyclerview 中所有 的最终列表更新到服务器。

提前谢谢你。

【问题讨论】:

    标签: java android android-studio android-recyclerview


    【解决方案1】:

    第 1 步)首先你需要在你的 editText 上添加一个 textChangeListner 并在其中更新你的 arrayList

        myHolder.editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
                TestListLabRetro testListLabRetro = arrayList.get(i);
                testListLabRetro.setPrice(editable.toString());
                arrayList.set(i, testListLabRetro);
            }
        });
    

    步骤 2) 创建一个 getData 方法

    public ArrayList<TestListLabRetro> getData(){
        return this.arrayList;
    }
    

    第 3 步)从您的适配器调用 getData 方法,您在其中发出 POST 请求以获取更新的数组列表

    【讨论】:

      【解决方案2】:

      在您的 POST 请求之后,将数据添加到 ArrayList 列表并调用 adapter.notifydatasetchaged()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多