【问题标题】:Saving and Retrieving an ArrayList then adding it to a ListView保存和检索 ArrayList,然后将其添加到 ListView
【发布时间】:2016-03-08 16:27:07
【问题描述】:

在过去的几天里,我一直在尝试保存和加载 ArrayList 的字符串,但我似乎无法让它工作。没有错误,但它甚至不会再将项目添加到 ListView 中。我也不认为它会节省。请帮忙?

package com.evolvr.productivityapp;

import android.app.ListActivity;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.io.*;


import java.util.ArrayList;

public class toDoList extends ListActivity {
    private Button done;
    private ListView theList;
    private EditText listItem;
    private ArrayList<String> listOfList = new ArrayList<String>();
    private ArrayAdapter<String> adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);

        done = (Button) findViewById(R.id.doneBtn);
        theList = (ListView) findViewById(android.R.id.list);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listOfList);

        FileInputStream fis;
        ObjectInputStream ois;

        done.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listItem = (EditText) findViewById(R.id.taskTextView);
                if (listItem.getText().toString() == "") {

                } else { //adding items to the listview
                    listOfList.add(listItem.getText().toString());
                    listItem.setText("");
                    adapter.notifyDataSetChanged();
                }
            }
        });
        setListAdapter(adapter);
        try{
            fis = openFileInput("ToDo");
            ois = new ObjectInputStream(fis);
            listOfList = (ArrayList<String>) ois.readObject();
        }catch(IOException e){
            Log.e("ToDoInput", "Can't import todo");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }

    @Override
    protected void onPause(){
        super.onPause();
        FileOutputStream fos;
        ObjectOutputStream ous = null;

        try{
            fos = openFileOutput("ToDo", Activity.MODE_PRIVATE);
            ous = new ObjectOutputStream(fos);
            ous.writeObject(listOfList);
        }catch(IOException e){
            Log.e("ToDo", "Something wrong with output?");
        }finally {
            try{
                if(ous != null) {
                    ous.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }


    }

【问题讨论】:

  • 你用的是什么版本的安卓?
  • 您在列表中提供了一个空适配器,请尝试在读取对象后移动创建适配器的行。
  • @Mohamed 你能检查我的答案,看看是否有帮助

标签: java android listview arraylist save


【解决方案1】:

您可以在通过前检查列表项是否为空或为空

done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    listItem = (EditText) findViewById(R.id.taskTextView);
    if (isEditTextNotNull(listItem)) {
        //adding items to the listview
        listOfList.add(listItem.getText().toString());
        listItem.setText("");
        adapter.notifyDataSetChanged();
    }
}
});

private boolean isEditTextNotNull(EditText listItem) {
  return listItem.getText().toString()!=null && !listItem.getText().toString().isEmpty();
}

【讨论】:

    【解决方案2】:

    尝试从这个例子中获取相同的概念:

    private ArrayList<String> listOfList = new ArrayList<String>();
    private ListView LView;
    String someText = "This is some text that will be added";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);
    listOfList.add(someText);
    
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listOfList);
        LView.setAdapter(adapter); //Adds to the List View
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2018-07-05
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2020-03-04
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多