在共享首选项中的存储列表上应用 notifyDataSetChanged

埃马纽埃尔·奥科查

我的列表视图有问题 我正在使用用户在单击添加新按钮时在对话框中输入的内容填充我的列表视图。单击此按钮时,会出现一个对话框,并要求用户在用户按下完成时输入某些内容,即使我放置了 notifyDataSetChanged,他/她输入的内容也不会出现在列表中的视图中。用户输入的内容仅在片段重新启动时出现。我认为这可能涉及保存代码中的 tinyDB 共享首选项。我如何确保存储的列表注意到 notifyDataSetChanged 。谢谢

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_year_two_my_courses_first_semester, container, false);
    btnAddNew = (Button)rootView.findViewById(R.id.btnAddNewYearTwoFirstSemester);
    btnSave = (Button)rootView.findViewById(R.id.btnSaveAddedSubjectsFirstSemesterYr2);
    listView = (ListView)rootView.findViewById(R.id.listViewSubjectsMyCoursesFirstSemesterYr2);
    tinyDB = new TinyDB(getContext());
    storedList = new ArrayList<>(tinyDB.getListString("storedList1stYr2"));
    storedArray = new ArrayList<>();
    generalList = new ArrayList<>();

    generalList.addAll(storedArray);
    generalList.addAll(storedList);



    getActivity().setTitle("Year Two");

    setHasOptionsMenu(true);

    btnAddNew.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btnSave.setVisibility(View.VISIBLE);
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext(),R.style.DialogeTheme);
            // Setting Dialog Title
            alertDialog.setTitle("Add new");

            // Setting Dialog Message
            String getUsername = tinyDB.getString("Username");
            alertDialog.setMessage("Hello "+ getUsername + ", please write the new subject");
            final EditText input = new EditText(getContext());
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            input.setLayoutParams(lp);
            input.setTextColor(Color.parseColor("#f06292"));
            alertDialog.setView(input);
            alertDialog.setPositiveButton("Add", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    String getSubjectInput = input.getText().toString();
                    storedList.add(getSubjectInput);
                    tinyDB.putListString("storedList1stYr2", storedList);
                    arrayAdapter.notifyDataSetChanged();


                }
            });

            alertDialog.setNegativeButton("CANCEL",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                            dialog.cancel();
                        }
                    });
            // Showing Alert Message
            alertDialog.create();
            alertDialog.show();

        }
    });
    arrayAdapter = new CustomListAdapter(getContext(),generalList);
    listView.setAdapter(arrayAdapter);
    arrayAdapter.notifyDataSetChanged();


    return rootView;
}
亚历山大·布瑞茨

您的 CustomListAdapter 正在观察 generalList,当您在 storedList 中添加新字符串时,它不会改变。

你可以这样做:

public void onClick(DialogInterface dialogInterface, int i) {
                String getSubjectInput = input.getText().toString();
                storedList.add(getSubjectInput);
                tinyDB.putListString("storedList1stYr2", storedList);

                generalList.add(getSubjectInput);
                arrayAdapter.notifyDataSetChanged();
            }

或清除并重置您的列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

共享首选项存储在哪里?

在Recyclerview适配器上设置notifyDataSetChanged()

RecyclerView上的notifyDataSetChanged

Flutter将共享首选项存储在字段中

应用更新会从内部存储中删除旧的共享首选项数据

notifyDatasetChanged()在Kotlin中不起作用

在共享首选项上覆盖arraylist

共享首选项以存储int值

共享首选项中的更新列表

在实现FastAndroidNetwork的lambda中的NotifyDataSetChanged

如何在ListAdapter上使用notifyDataSetChanged()

NotifyDataSetChanged()是否不刷新列表?

无法在Android中设置notifyDataSetChanged

如何从AsyncTask中调用notifyDataSetChanged()

notifyDataSetChanged()不刷新可扩展列表视图

在活动中存储和获取应用程序的共享首选项

如何在共享首选项中存储多个键值对

调用arrayAdapter.notifyDataSetChanged()时,应用崩溃

共享首选项中的联系人存储

从RecyclerView上的notifyDataSetChanged删除占位符视图?

notifyDataSetChanged()强制在FragmentStatePagerAdapter中向上滚动

如何在Android上发布授权标头,令牌存储在共享首选项中

notifyDataSetChanged在我的活动中不起作用

Android:notifyDataSetChanged()在Fragment中不起作用

Android TabLayout 在notifyDataSetChanged() 之后更改选项卡

notifyDataSetChanged 在片段上无法正常工作

在 onBindViewHolder 中调用 notifyDataSetChanged

基本适配器中的 notifyDatasetChanged 问题

颤振| 如何在共享首选项中存储 List<String> 列表?