2014-12-03 100 views
-1

這是我想如何添加項目到listView。但不幸的是,它刪除舊項目並添加新項目而不是附加到舊項目。ListView項目覆蓋現有項目

 // get prompts.xml view 
    LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this); 
    View promptView = layoutInflater.inflate(R.layout.input_dialog, null); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      MainActivity.this); 
    alertDialogBuilder.setView(promptView); 
    final EditText editText = (EditText) promptView 
      .findViewById(R.id.list_text); 
    ListView lv=(ListView)findViewById(R.id.itemslistView); 
    final List<String> MyList = new ArrayList<String>(); 

    final ArrayAdapter<String> adp = new ArrayAdapter<String>(MainActivity.this, 
      R.layout.list, MyList); 
    lv.setAdapter(adp); 
    // setup a dialog window 
    alertDialogBuilder 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        String NewListname = editText.getText().toString(); 
        MyList.add(NewListname); 
        Toast.makeText(MainActivity.this, NewListname, 
          Toast.LENGTH_LONG).show(); 
        adp.notifyDataSetChanged(); 

       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

    // create an alert dialog 
    AlertDialog alert = alertDialogBuilder.create(); 
    alert.show(); 

任何人都可以說我如何添加它們?

+0

你檢查在確定在調試模式下的onclick MYLIST的數據?它是否也包含舊數據? – 2014-12-03 08:45:03

+0

@ MysticMagic - 沒有舊的數據不存在。 – coder 2014-12-03 08:45:47

+0

不使用新的ArrayList ();'如果它已經定義..只是添加項目,並調用'adp.notifyDataSetChanged();' – 2014-12-03 08:46:02

回答

2

的問題是:

ArrayList中的數據被覆蓋,由於其內部的初始化:

final List<String> MyList = new ArrayList<String>(); 

讓它全局變量。只需在其中添加數據

MyList.add(NewListname); 

或者只是將項目添加到適配器。

adp.add(NewListname); 
Toast.makeText(MainActivity.this, NewListname, 
          Toast.LENGTH_LONG).show(); 
adp.notifyDataSetChanged(); 

希望這會有所幫助。

+0

@ MysticMagic-謝謝...這是罪魁禍首:) – coder 2014-12-03 08:52:11

0

使用下面的代碼:的

MyList.add(NewListname); 
Toast.makeText(MainActivity.this, NewListname, 
         Toast.LENGTH_LONG).show(); 
adp = new ArrayAdapter<String>(MainActivity.this, 
     R.layout.list, MyList); 
adp.notifyDataSetChanged(); 

代替:

MyList.add(NewListname); 
    Toast.makeText(MainActivity.this, NewListname, 
         Toast.LENGTH_LONG).show(); 
    adp.notifyDataSetChanged();