2015-03-17 2 views
1

Почему мой просмотр списка не обновляет свой пользовательский интерфейс, когда я удаляю только один элемент из моего адаптера, который сохраняет текущий отображаемый элемент, но запись уже удалена из моего списка адаптер ..?Android Listview Adapter не обновляет/обновляет пользовательский интерфейс, когда я удалял только один элемент записи

Мой элемент Удалить работает, когда из моего адаптера сохраняется более одной записи, но когда я удалил все элементы, я сохранил последний элемент, который я удалил из пользовательского интерфейса.

Вот код, который я попытался обновить свой пользовательский интерфейс, но до сих пор не работает ... им с помощью SimpleAdapter

case PaymentModeCollection.CHECK: 
    //deletePaymentMode(arrListSet , paymentIdentity); 
    deletePaymentMode(arrCheck , paymentIdentity); 
    //checkEditOrAdd = true; 
    //arrCheck.remove(0); 
    myAdapter.notifyDataSetChanged(); 
    //listView.refreshDrawableState(); 
    //listView.invalidate(); 
    //onPause(); 
    //onResume(); 
break; 





public SpecialAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) { 
      super(context, items, resource, from, to); 
     } 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 
    int colorPos = position % colors.length; 
    //if(!(view == null)){ 
    view.setBackgroundColor(colors[colorPos]); 
    //} 
    return view; 
} 

Вот мой deletePaymentMode

protected static void deletePaymentMode(ArrayList<?> containerSetPaymentMode,String reference){//Set<ArrayList<?>> containerSetPaymentMode 
    /* 
    for(int i = 0; i <= containerSetPaymentMode.size() -1; i++){ 
     if(containerSetPaymentMode.get(i) instanceof Cash){ 


     } 
     if (containerSetPaymentMode.get(i) instanceof Check) { 
      Check tempCheck = (Check) containerSetPaymentMode.get(i); 
      if(tempCheck.getxCheckNo().contentEquals(reference)){ 
       Log.d(TAG, "ITEM TO BE DELETE FOUND"); 
       arrCheck.remove(i); 
       //break; 
      } 
     } 
    } 
    */ 



    Iterator<?> ia = containerSetPaymentMode.iterator(); 



    while (ia.hasNext()) { 
     Object paymentObject = ia.next(); 


     if (paymentObject instanceof Cash) { 
      ArrayList<Cash> tempArr = (ArrayList<Cash>) paymentObject; 


     } else if (paymentObject instanceof Check) { 
      Check tempCheck = (Check) paymentObject; 
      if(tempCheck.getxCheckNo().contentEquals(reference)){ 
       ia.remove(); 
       break; 
      } 
+0

Вы можете показать код метода deletePaymentMode() '? – hrskrs

ответ

1

Я не знаю, что делает ваш deletePaymentMode(), но вы всегда должны вносить изменения (добавлять, удалять, обновлять) в свой список, который содержит ваши элементы для вашего ListView:

myListViewItems.remove(itemToRemove); 
myAdapter.notifyDataSetChanged(); 

Этого должно быть достаточно, чтобы удалить товар.

+0

Мне уже удалось удалить мой элемент .. но когда я удалил последний элемент, он не обновил мой список до каких-либо предметов, которые будут отображаться. –

+0

Вы проверили, действительно ли элемент удален из вашего списка? Возможно, у вас есть ошибка в вашей логике для удаления последнего элемента. – Deutro

+0

Я уже проверил, что .. пользовательский интерфейс не обновляется .. его странно .. и событие onclick также запускается, но мой элемент уже удален и дает мне нулевой указатель. –

Смежные вопросы