2016-07-07 6 views
0

Я делаю Список ToDo и имею проблемы с удалением элемента из ListView.Android Studio, Удалить элемент ListView, не затрагивая другой элемент

Если пользователь сделал одну вещь в его списке, он может нажать на эту деталь и он будет либо наносил через, или забастовка trhough будет отменена:

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

      TextView tv = (TextView) view; 
      int i_strikethrough = tv.getPaintFlags(); 
      if(i_strikethrough == 1297){ 
       tv.setPaintFlags(tv.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG)); 
      } else if (i_strikethrough == 1281){ 
       tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
      } 
     } 
    }); 

Если пользователь делает длинный нажмите, появится сообщение, и он может выбрать, чтобы удалить этот пункт:

lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
      alertDialogBuilder.setTitle("Delete"); 
      alertDialogBuilder.setMessage("Are you sure you want to delete?"); 
      alertDialogBuilder.setCancelable(false); 
      alertDialogBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() 
      { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) 
       { 
        adapterInhalt.remove(adapterInhalt.getItem(position)); 
       } 
      }); 
      alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() 
      { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) 
       { 
        dialogInterface.cancel(); 
       } 
      }); 
      AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialog.show(); 

      return true; 
     } 
    }); 

Теперь моя проблема заключается в следующем:

Представьте себе второй товар наносил через но Тхи rd нет.

Если я удалю второй предмет, то третий элемент находится на втором месте и пробивается. Но его не следует преодолевать.

Я надеюсь, что вы поймете мою проблему и поможете мне решить эту проблему.

Я надеюсь, что эта картина поможет вам понять вопрос: A helping Picture

+0

нам нужно посмотреть на ваш полный код адаптера .. !! –

ответ

0

Вы не реализует представление списка должным образом. Просмотр списков перекодированных представлений. Это означает, что они используют одни и те же взгляды и помещают в них разные позиции. Это обеспечивает очень эффективный код пользовательского интерфейса. Это также означает, что если вы внесете какие-либо изменения в представление вне getView вашего адаптера, эти изменения будут применены к неправильному элементу при удалении или прокрутке.

Способ записи списка состоит в том, что если вы хотите обновить интерфейс любой позиции, вы измените модель этой позиции. Затем вы сообщаете адаптеру, что его необходимо обновить, вызвав notifyDataSetChanged(). Функция getView будет вызвана, чтобы перерисовать каждый видимый элемент и применить пробой.

0

Вы должны определить класс для своих элементов, который имеет логическое поле для статуса забастовки. например:

public class MyItem{ 
    String name; 
    boolean isStriked; 
} 

, то вы можете проверить, если элемент наносил через на getView() метод адаптера. вы можете увеличить сцепление в коде таким образом. BTW Я рекомендую использовать RecyclerView, поскольку он имеет предопределенные методы и анимации для удаления элемента

+0

Я не знал, что есть что-то вроде RecyclerView. Спасибо. У меня будет доступ к нему. – DIvin93

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

  • Нет связанных вопросов^_^