Java 变量不进入列表视图

Java 变量不进入列表视图,java,android,android-studio,android-listview,Java,Android,Android Studio,Android Listview,我有一个脚本,希望在用户退出并重新打开后保存并再次加载字符串数组。但是,当我重新进入应用程序时,变量不会出现在列表视图中它们应该出现的位置。我不知道这是因为它没有正确保存或加载,还是因为它没有被发送到列表视图。非常感谢你的帮助。多谢各位 public class AltonDuel extends Activity { private Button bt; private ListView lv; private ArrayList<String> strArr; private

我有一个脚本,希望在用户退出并重新打开后保存并再次加载字符串数组。但是,当我重新进入应用程序时,变量不会出现在列表视图中它们应该出现的位置。我不知道这是因为它没有正确保存或加载,还是因为它没有被发送到列表视图。非常感谢你的帮助。多谢各位

public class AltonDuel extends Activity {

private Button bt;
private ListView lv;
private ArrayList<String> strArr;
private ArrayAdapter<String> adapter;
private EditText et;
ArrayList<String> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alton_duel);
    bt = (Button) findViewById(R.id.button);
    lv = (ListView) findViewById(R.id.listView);
    et = (EditText) findViewById(R.id.editText);
    final Calendar cal = Calendar.getInstance();
    final int dd = cal.get(Calendar.DAY_OF_MONTH);
    final int mm = cal.get(Calendar.MONTH);
    final int yy = cal.get(Calendar.YEAR);
    int rideCountFile;
    strArr = new ArrayList<String>();
    final SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("AltonDuelCount", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor = sharedPref.edit();
    final Set<String> data = sharedPref.getStringSet("stringArr", new HashSet<String>());
   strArr = new ArrayList<String>(data);
    adapter = new ArrayAdapter<String>(getApplicationContext(),
            android.R.layout.simple_list_item_1, strArr);
    lv.setAdapter(adapter);
    bt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            strArr.add(dd + "-" + mm + "-" + yy + "    |     " + et.getText().toString());
            adapter.notifyDataSetChanged();
            Set<String> data = new HashSet<String>(strArr);
            editor.putStringSet("stringArr", data);

        }
    });
}}
公共类AltonDuel扩展活动{
专用按钮bt;
私有ListView lv;
私人ArrayList strArr;
专用阵列适配器;
私人编辑;
阵列列表数据;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u alton\u duel);
bt=(按钮)findViewById(R.id.Button);
lv=(ListView)findViewById(R.id.ListView);
et=(EditText)findViewById(R.id.EditText);
最终日历cal=Calendar.getInstance();
最终int dd=cal.get(日历日/月);
最终整数mm=cal.get(日历月);
最终int yy=cal.get(日历年);
int ridecontfile;
strArr=新的ArrayList();
最终SharedReferences SharedReferences=getApplicationContext().GetSharedReferences(“AltonDuelCount”,Context.MODE\u PRIVATE);
最终SharedReferences.Editor=SharedReference.edit();
最终集数据=sharedPref.getStringSet(“stringArr”,新HashSet());
strArr=新阵列列表(数据);
适配器=新的ArrayAdapter(getApplicationContext(),
android.R.layout.simple_list_item_1,strArr);
低压设置适配器(适配器);
bt.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
添加(dd+“-”+mm+“-”+yy+“|”+et.getText().toString());
adapter.notifyDataSetChanged();
Set data=新哈希集(strArr);
编辑器.putStringSet(“stringArr”,数据);
}
});
}}
你为什么要这样做

 adapter = new ArrayAdapter<String>(getApplicationContext(),
                android.R.layout.simple_list_item_1, strArr);
        lv.setAdapter(adapter);
adapter=new ArrayAdapter(getApplicationContext(),
android.R.layout.simple_list_item_1,strArr);
低压设置适配器(适配器);

两次?只有在将数据添加到数组后才能使用
setAdapter()

谢谢您的回复。在添加数据后,我将该位移动到,但它仍然不起作用。我已更新了初始问题中的代码。您仅在
onClick()中获得值
strArr
。在这里,您已将
strArr
传递给适配器,然后再将值存储在适配器中。在将值存储到arraylist后,请尝试
setAdapter()
inside Onclick()。单击按钮时,变量将添加到列表视图中,但我希望存储这些变量,以便用户重新输入时它们仍然存在