首页 > 解决方案 > 以正确的顺序保存和显示 ArrayList

问题描述

我是一名初级开发人员,我对如何保存屏幕实例的经验很少。

活动:

活动

我的应用程序所做的是用户每小时输入已完成 (X) 的数量。我想做的是,当用户离开此页面并转到另一个活动,然后返回时,列表将保留。

我尝试使用此代码:

 @Override
protected void onPause() {
    super.onPause();
    //Set the values
    sharedPreferences = getSharedPreferences("MYPREFS", MODE_PRIVATE );
    SharedPreferences.Editor editor = sharedPreferences.edit();
    Set<String> set = new HashSet<String>();
    set.addAll(ListElementsArrayList);
    editor.putStringSet("list", set);
    editor.apply();
    }


@Override
public void onResume() {
    super.onResume();
    sharedPreferences = getSharedPreferences("MYPREFS", MODE_PRIVATE );
    SharedPreferences.Editor editor = sharedPreferences.edit();
    Set<String> set = sharedPreferences.getStringSet("list", null);
    ListElementsArrayList.addAll(set);
    listView.setAdapter(adapter);
}

添加到列表的代码:

 handler = new Handler() ;

    ListElementsArrayList = new ArrayList<String>(Arrays.asList(ListElements));

    adapter = new ArrayAdapter<String>(Processing.this,
            android.R.layout.simple_list_item_1,
            ListElementsArrayList
    );

    listView.setAdapter(adapter);


    btnShippersCompleted.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            shippersCompleted = textView.getText().toString();
            ListElementsArrayList.add(shippersCompleted + "- Hour " + Hour++);
            adapter.notifyDataSetChanged();
        }
    });

尽管我在 onResume() 方法上收到了一个空指针。所以我将代码添加到了 RELOAD 按钮。尽管现在列表出现故障,但它正在工作(见屏幕截图)。

我怎样才能:

  1. 消除重新加载按钮,以便列表自动保留

  2. 按照保存的顺序重新加载列表。

标签: javaandroidarrayslistview

解决方案


也许这不是您正在等待的答案,但请尝试使用数据库,因为共享首选项本身存储元素(集合)的无序列表。或者您应该对列表进行排序,然后才将其设置为适配器。


推荐阅读