2013-08-22 33 views
-1

我想從「列表視圖」中刪除一行,單擊「刪除」按鈕。我的列表視圖項目具有以下水平放置的內容:TextView-1,TextView-2,TextView-3,ImageButton-delete按鈕。現在當我點擊刪除按鈕時,該行應該從視圖中刪除。以下是適配器代碼;刪除自定義適配器中的ListView行

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      View view = (View) v.getParent(); 
      TextView tv = (TextView) view.findViewById(R.id.item_name); 
      String item = tv.getText().toString(); 
      String tableno = mListItems.get(0).getTableNumber(); 

      orderDetailsDB = new OrderDetailsDBAdapter( 
        getApplicationContext()); 

      orderDetailsDB.deleteItem(item,tableno); 

我嘗試通過設置個別文字瀏覽爲空白,但它不工作。

holder.itemName.setText(""); 
holder.amount.setText(""); 
holder.quantity.setText(""); 

我讀了一些文章,他們建議從我的列表中刪除項(mListItems),然後做adapter.notifyDataSetChanged();。問題是我沒有使用數組適配器來填充列表視圖,但使用自定義適配器,因此無法獲取要刪除項目的位置。請指教。謝謝。

回答

1

只需使用remove()方法來從適配器

刪除列表項,供您參考

adapter = new MyListAdapter(this); 
    lv = (ListView) findViewById(android.R.id.list); 
    lv.setAdapter(adapter); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
     AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this); 
     adb.setTitle("Delete?"); 
     adb.setMessage("Are you sure you want to delete " + position); 
     final int positionToRemove = position; 
     adb.setNegativeButton("Cancel", null); 
     adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       MyDataObject.remove(positionToRemove); 
       adapter.notifyDataSetChanged(); 
      }}); 
     adb.show(); 
     } 
    }); 
+0

我們不使用setOnItemClickListener,而使用setonClicklistener來代替這個 – user2416087

4

低於行頭寫在你的適配器的getView方法。

button.setTag(position) 

onClick方法

  @Override 
      public void onClick(View v) { 
       int position = (Integer)v.getTag(); 
       yourarraylistObject.remove(position); 
       // your remaining code 
       notifyDataSetChanged(); 
       } 
0

你可以爲了得到你想要刪除的位置做的是傳遞到你的聽衆:

// inside custom adapter 
@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
..... 
deleteButton.setOnClickListener(new MyClickListener(position); 
} 
private class MyClickListener implements OnClickListener 
{ 
int position = -1; 
public MyClickListener(final int position) 
{ 
    this.position = position; 
} 
@Override 
public void onClick(View v) { 
    // do your delete code here 
    notifyDataSetChanged(); 
} 
相關問題