簡體   English   中英

單擊項目時從列表視圖中刪除項目

[英]Delete item from listview when the item is clicked

我目前有這個代碼在列表視圖中顯示所選項目:

public class DisplayOrder extends AppCompatActivity {

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

    Button btn = (Button) findViewById(R.id.btnHome);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(DisplayOrder.this, Options.class);
            startActivity(myIntent);

        }
    });
}

private void bar() {


    ListView lv = (ListView) findViewById(R.id.listViewDisplay);

    List<String> itemsOrdered = new ArrayList<String>();


    for (Map.Entry<Item, Integer> entry : Datastore.currentTable.getOrder().getItems().entrySet()) {
        itemsOrdered.add((entry.getKey().name) + " x " + String.valueOf(entry.getValue()) + " £" + (entry.getKey().price * entry.getValue()));
    }


    // This is the array adapter, it takes the context of the activity as a
    // first parameter, the type of list view as a second parameter and your
    // array as a third parameter.
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getBaseContext(), R.layout.activity_display_order, R.id.textView8, itemsOrdered);

    lv.setAdapter(arrayAdapter);
}
}

我想要做的是,當我點擊其中一個項目時,它被刪除但我不知道該怎么做。 任何指導都將非常感謝。

您應該通過setOnItemClickListener檢測何時單擊ListView的每個項目。
然后在這個方法里面,只需刪除list datasource和notifyDataSetChanged

lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView < ? > parent, View view,int position, long id) {

        itemsOrdered.remove(position); // remove item at index in list datasource
        arrayAdapter.notifyDataSetChanged(); // call it for refresh ListView

        Toast.makeText(getApplicationContext(), "remove item at " + position, Toast.LENGTH_LONG).show(); 
    }

});

您必須像這樣覆蓋偵聽器“setOnItemClickListener”:

listView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    itemsOrdered.remove(item);
    arrayAdapter.notifyDataSetChanged();

  }
}); 

此代碼從列表中刪除了ítem,但您必須通知適配器的更改。 通知適配器時,列表視圖會更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM