2014-12-03 2 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

디버그 모드에서 OK의 OnClick에 myList에의 데이터를 확인 했습니까? 이전 데이터도 포함되어 있습니까? –

+0

@ MysticMagic- 이전 데이터가 없었습니다. – coder

+0

'new ArrayList ();'이 이미 정의 된 경우 사용하지 마십시오. 그냥 항목을 추가하고'adp.notifyDataSetChanged(); '를 호출하십시오 –

답변

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(); 

희망이 있습니다.

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

대신 :

+0

@ MysticMagic-thanks ... 범인입니다 :) – coder

0

는 다음 코드를 사용

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