Listview从otherActivity添加项目

时间:2016-03-02 09:13:41

标签: android listview notifydatasetchanged

我试图从其他活动中获取数据并将其添加到我主要活动中的列表视图中

    ArrayAdapter<String> arrayAdapter;
    ArrayList<String> fetchList= new ArrayList<String>();

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

      lv = (ListView) findViewById(R.id.imglist);
        arrayAdapter = new ArrayAdapter<String>(
                this,
                R.layout.custom_textview,R.id.listtext,
                myStringList );
        Bundle extras = getIntent().getExtras();

        if (extras != null ) {

            fetchList=  getIntent().getStringArrayListExtra("data");
            for(int i = 0 ; i < fetchList.size() ; i++) {
                filepath = fetchList.get(i);
                imgfilename=filepath.substring(filepath.lastIndexOf("/")+1);
                myStringList.add(imgfilename);
                lv.setAdapter(arrayAdapter);
                arrayAdapter.notifyDataSetChanged();
            }
        }
   }

现在我的问题是当我第一次获取数据和项目时它完美地添加但是当我第二次添加它时,之前添加的项目不再被看到(即...旧项目被删除和新项目)

我想将新项目添加到现有项目中,目前我没有存储任何类型的列表视图项目数据。

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

ArrayAdapter arrayAdapter;    public static ArrayList fetchList = new ArrayList();

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

  lv = (ListView) findViewById(R.id.imglist);
    arrayAdapter = new ArrayAdapter<String>(
            this,
            R.layout.custom_textview,R.id.listtext,
            myStringList );
    ArrayAdapter<String> arrayAdapter;
ArrayList<String> fetchList= new ArrayList<String>();

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

  lv = (ListView) findViewById(R.id.imglist);
    arrayAdapter = new ArrayAdapter<String>(
            this,
            R.layout.custom_textview,R.id.listtext,
            myStringList );
    Bundle extras = getIntent().getExtras();

    if (extras != null ) {

        //get some flag to notify adpter refresh
        if(getIntent().getBoolean("refresh"))
            arrayAdapter.notifyDataSetChanged();

    }

}    }

在第二个活动中将数据添加到静态列表

MainActivity.fetchList.add(your data);

并将带有标志的bundle传递给后面的第一个活动

答案 1 :(得分:0)

将这两行放在循环之外..

 lv.setAdapter(arrayAdapter);
            arrayAdapter.notifyDataSetChanged();