在Edittext文本更改时更新recyclerview

问题描述 投票:0回答:2

我下面有一个Edittext和一个recyclerview片段。 recyclerview行项目具有textview。我已经设置了适配器,一切正常。我想用edittext中的文本更改recyclerview的每个项目,以某种方式不起作用。我尝试在getListForRv()方法上使用itemArrayAdapter.notifyDataSetChanged()。

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_fonts, container, false);

        itemList = new ArrayList<FontItem>();

        EditText editText = getActivity().findViewById(R.id.edit_text);
        itemArrayAdapter = new ItemArrayAdapter(R.layout.recyclerview_item, itemList);


        recyclerView = (RecyclerView) view.findViewById(R.id.font_list);

        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(itemArrayAdapter);
        getListForRv();

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });


        return view;
    }

    private void getListForRv() {
        for (int i = 0; i < 1000; i++) {
            itemList.add(new FontItem("Item " + i));
        }
    }
android android-recyclerview android-edittext
2个回答
0
投票

在编辑文本getListForRv()方法上调用afterTextChanged。>>


0
投票

notifyDataSetChanged将刷新所有itemview,如果要同步所有edittext。我有两种解决方案:1.数据绑定:可以使用ObservableField2.创建一个侦听器,并确保所有项目都保留该侦听器,当editext更改时,调用侦听器,然后所有itemview将接受更改

© www.soinside.com 2019 - 2024. All rights reserved.