4

ヘッダーにリストを追加するための編集テキストフィールドがあるリストビューを作成しました.そして、それは正常に機能し、アイテムを正常に追加します. 次に、このリストビューを呼び出してアダプターを設定しようとします。今私が欲しいのは、削除する必要があるアイテムをクリックすると強制的に閉じられることです。これが私のコードです:

public class AddDeleteItemActivity extends ListActivity {
public ListView listViewCity;
public Context ctx;

ArrayList list = new ArrayList();

ArrayAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   setContentView(R.layout.main);

   Button btn = (Button) findViewById(R.id.btnAdd);
   ctx=this;


   adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);

   OnClickListener listener = new OnClickListener() {
       @Override
       public void onClick(View v) {
           EditText edit = (EditText) findViewById(R.id.txtItem);
           list.add(edit.getText().toString());
           edit.setText("");
           adapter.notifyDataSetChanged();
       }
   };


   listViewCity = ( ListView ) findViewById( R.id.list);
   listViewCity.setAdapter(adapter);

   listViewCity.setOnItemClickListener(new OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

               Toast.makeText(getApplicationContext(), " " +position , Toast.LENGTH_LONG).show();
               SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions();
               int itemCount = getListView().getCount();

               for(int i=itemCount-1; i >= 0; i--){
                   if(checkedItemPositions.get(i)){
                       adapter.remove(list.get(i));
                   }
               }
               adapter.notifyDataSetChanged();
       }

   });


   btn.setOnClickListener(listener);

   setListAdapter(adapter);
}
}
4

1 に答える 1

5

この方法を試してください

listViewCity.setOnItemClickListener(new OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

               Toast.makeText(getApplicationContext(), " " +position , Toast.LENGTH_LONG).show();
               list.remove(position);
               adapter.notifyDataSetChanged();
               adapter.notifyDataSetInvalidated();
       }

   });

リストから削除し、アダプター通知を使用してリストを更新します

編集済み

ListActivity を拡張するときにこのステートメントを使用する理由

listViewCity = ( ListView ) findViewById( R.id.list);

ListActivity を拡張して getListView() を使用して ListView オブジェクトを取得するか、ListActivity の代わりに Activity を拡張します。

于 2012-09-14T10:18:52.343 に答える