2014-11-24 63 views
0
  • 我正在從列表視圖的位置刪除該項目的數組。
  • 我可以從數據庫中刪除該項目,但不能立即從列表視圖中刪除。
  • 我正在使用adapter.notifyDataSetChanged();更新但不起作用。雖然使用adapter.clear()它工作正常,並清除列表視圖。 我正在根據listview的位置從陣列中刪除項目。
  • 我可以從數據庫中刪除該項目,但不能立即從列表視圖中刪除。我正在使用adapter.notifyDataSetChanged();進行更新,但無法正常工作。雖然使用adapter.clear()它工作正常,並清除列表視圖。
  • 我正在刪除基於列表視圖的位置的數組中的項目。我可以從數據庫中刪除該項目,但不能立即從listview刪除該項目。我正在使用adapter.notifyDataSetChanged();更新但不起作用。雖然使用adapter.clear()它工作正常,並清除list view

< - spacer使代碼保持在上面的項目列表之外。 - >我的適配器ID notifydatasetchanged()也不會更改

holder.dlttxt.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     Contact lContact = (Contact) list 
       .getItemAtPosition(position); 
     long positionid = list.getItemIdAtPosition(position); 
     Log.e("", "--position id---" + positionid); 

     Log.e("", "----deleted id--" + lContact.getID() 
       + "--deleted name---" + lContact.getName()); 
     db.deleteContact(lContact.getID()); 
     quan = lContact.getName(); 
     Toast.makeText(getContext(), 
       lContact.getName() + ":" + "Deleted Sucessfully", 
       Toast.LENGTH_SHORT).show(); 
     Log.e("", "---array size--" + imageArry.size()); 
     imageArry.remove(positionid); 
     /*adapter.clear(); 
     adapter.addAll(db.getAllContacts()); 
     */     
     adapter.notifyDataSetChanged(); 
     count = db.getContactsCount(); 
     HelperActivity.num.setText(String.valueOf(count)); 

    } 

}); 
+0

請發表您的適配器初始化.. – 2014-11-24 11:50:38

+0

因爲適配器有老人data..so的參考,你可能會wona用做直接適配器或重置數據並notifyDataSetChanged – Elltz 2014-11-24 11:54:47

+0

//讀取數據庫中的所有聯繫人 列表 contacts = db.getAllContacts(); 爲(聯繫CN:觸點){ 字符串日誌= 「ID:」 + cn.getID()+ 「名稱:」 + cn.getName() \t \t \t \t \t + 「圖像:」 + cn.getImage ()+「Price:」+ cn.getprice(); id = cn.getID(); name = cn.getName(); price = cn.getprice(); getarray.add(cn.getName()); getid.add(cn.getID()); quantityid.add(cn.getQuantity()); quantityid.add(cn.getQuantity()); pricesarray.add(cn.getprice()); imageArry.add(cn); \t \t} 適配器=新OrdersImageAdapter(此,R.layout.orderscart,imageArry); \t \t list.setAdapter(adapter); – yamuna 2014-11-24 12:18:27

回答

0

我想你可以刪除你的適配器getview方法內的項目

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 

-------------------------- inflating stuff etc. 
holder.dlttxt.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     Contact lContact = (Contact) list 
       .getItemAtPosition(position); 
     long positionid = list.getItemIdAtPosition(position); 
     Log.e("", "--position id---" + positionid); 

     Log.e("", "----deleted id--" + lContact.getID() 
       + "--deleted name---" + lContact.getName()); 
     db.deleteContact(lContact.getID()); 
     quan = lContact.getName(); 
     Toast.makeText(getContext(), 
       lContact.getName() + ":" + "Deleted Sucessfully", 
       Toast.LENGTH_SHORT).show(); 
     Log.e("", "---array size--" + imageArry.size()); 
     imageArry.remove(positionid); 
     /*adapter.clear(); 
     adapter.addAll(db.getAllContacts()); 
     */     
     adapter.notifyDataSetChanged(); 
     count = db.getContactsCount(); 
     HelperActivity.num.setText(String.valueOf(count)); 

    } 

}); 

} 
+0

然後,我需要刪除? – yamuna 2014-11-24 12:13:40

+0

你想要什麼。您可以添加onclickListener或觸摸監聽器的項目,當點擊或刷卡項目將被自動刪除 – huseyin 2014-11-24 12:18:43

+0

我有一個刪除bitton在我的列表視圖...當我點擊該按鈕我需要從列表視圖中刪除該行 – yamuna 2014-11-24 12:19:46

0

** notifyDataSetChanged()簡單地調用此方法刪除適配器BC notifyDataSetChanged(聲明)是適配器的方法,你在端適配器的getView()方法**

**和一兩件事,這將無法正常工作,你必須使用標籤來獲取exactlocation刪除**

long positionid = list.getItemIdAtPosition(position); 
+0

在positionid我得到的確切位置是錯的? – yamuna 2014-11-24 12:26:06

+0

那bc你的列表可能很小,但是如果列表中包含更多的項目會導致不可預知的行爲 – 2014-11-24 12:31:16

+0

這是否解決了你的問題notifyDataSetChanged() – 2014-11-24 12:31:58

0

您可以使用interface用於處理delete巴頓click事件

代碼片斷

interface處理點擊事件

public interface ListItemBtnClickInterface { 

    public void listItemBtnClickListener(Object obj, int viewId); 
} 

代碼構造的初始化

vieweHolder.deleteImgView.setTag(position); 
vieweHolder.deleteImgView.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Object data = v.getTag(); 
     if(data != null) { 
      _interface.listItemBtnClickListener(data, v.getId()); 
     } 
    } 
}); 

代碼後,在適配器Delete Button clickAdapter

public AddExpTypeAdapter(Context context, int resource, 
     List<ExpenseTypeInfo> objects, ListItemBtnClickInterface _interface) { 
    super(context, resource, objects); 
    // TODO Auto-generated constructor stub 
    _context = context; 
    layoutId = resource; 
    dataList = objects; 
    this._interface = _interface; 
    dbHelper = new PortfolioDbHelper(context); 
    notifyDataSetChanged(); 
} 

代碼爲Activity

addExpTypeAdapter = new AddExpTypeAdapter(AddExpTypeActivity.this, 
       R.layout.row_add_type, expTypeList, new ListItemBtnClickInterface() { 

       private int clickedPosition; 

       @Override 
       public void listItemBtnClickListener(Object obj, int viewId) { 
        // TODO Auto-generated method stub 
        clickedPosition = Integer.parseInt(obj.toString()); 
        ExpenseTypeInfo expenseTypeInfo = expTypeList.get(clickedPosition); 
        final long expTypeId = expenseTypeInfo.getId(); 
        switch (viewId) { 
         case R.id.deleteImgView: 
          new AlertDialog.Builder(AddExpTypeActivity.this) 
          .setTitle(getResources().getString(R.string.delete_exp_type_title)) 
          .setIcon(R.drawable.delete_icon) 
          .setMessage(R.string.delete_exp_type_msg).setCancelable(true) 
          .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           // TODO Auto-generated method stub 
           dbHelper.deleteExpenseType(expTypeId); 
           dbHelper.closeDB(); 
           expTypeList.remove(clickedPosition); 
           addExpTypeAdapter.notifyDataSetChanged(); 
          } 
         }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           // TODO Auto-generated method stub 

          } 
         }).show(); 
        break; 

        default: 
         break; 
        } 
       } 
      }); 
    typeListView.setAdapter(addExpTypeAdapter); 

N.設置適配器ListViewB: -我使用ArrayAdapter,並請更改這些變量名與你

相關問題