2015-03-21 2 views
0

У меня есть этот код, чтобы получить данные из базы данных и отображения в ListViewУдаление андроида ListView строки на LongClick

List<Contact> contacts = db2.getAllContacts(); 
     ArrayList<String> MY_LIST = new ArrayList<>(); 

     for (Contact cn : contacts) { 
      String outputt = "Id: " + cn.getID() + ", Message: " + cn.getMessage() + 
        ", Time: " + cn.getDate(); 
      MY_LIST.add(outputt); 
     } 

     ArrayAdapter<String> adapter = new ArrayAdapter<String> 
       (this, android.R.layout.simple_list_item_1, MY_LIST); 


     ListView listView = (ListView) findViewById(R.id.listView); 

     listView.setAdapter(adapter); 

Я хочу удалить конкретный элемент/строку на ListView на салфетках. Как я могу это достичь?

+0

Я также предоставил хорошую ссылку github и получил два антипатии. wow так предвзятость, если эти два парня также дали ссылку на другие ссылки и не получили никакой неприязни.! –

ответ

-2

Я провел один полный день обучения и обучения. Я сделал это так.

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
              int pos, long id) { 
       // TODO Auto-generated method stub 

       Log.v("long clicked", "pos: " + pos); 

       MY_LIST.remove(pos); //where pos is position of item I click 
       adapter.notifyDataSetChanged(); 

       return true; 
      } 
     }); 
+0

Почему вы проголосовали за мой ответ? Я изучал и просто разместил полезное решение, которое просто и прекрасно работает. Не хотите ли вы, чтобы люди проводили исследования, чтобы найти решение своих проблем? –

0

Вы можете использовать EnhancedListView. Просто скопируйте класс EnhancedListView из связанного репо в вашем проекте. Затем вместо ListView используйте и код EnhancedListView. Т.е .:

EnhancedListView listView = (EnhancedListView) findViewById(R.id.listView); 

// Then set an EnhancedListView.OnDismissCallback: 

listView.setDismissCallback(new de.timroes.android.listview.EnhancedListView.OnDismissCallback() { 

      @Override 
      public EnhancedListView.Undoable onDismiss(EnhancedListView listView, final int position) { 

       final String item = (String) adapter.getItem(position); 
       adapter.remove(position); 
       // If you'd like the user to be able to undo a swipe: 
       return new EnhancedListView.Undoable() { 
        @Override 
        public void undo() { 
         adapter.insert(position, item); 
        } 
       }; 
      } 
     }); 

// Enable swipe to dismiss: 

listView.enableSwipeToDismiss(); 

Примечание: Сделки РЕПО не поддерживается разработчиком больше в пользу нового RecyclerView по Google. Но вы можете легко использовать его, просто скопировав класс EnhancedListView в свой код.

+1

Upvoted. Большое спасибо. Эта вещь лишена. Но ваш ответ позволил мне найти recyclerview андроида, который выглядит великолепно, и я должен изучить его. Я изучил немного дальше и сумел выполнить мою работу. –

+0

Отлично. Вы можете разместить свое решение в качестве ответа, чтобы другие могли извлечь выгоду. – iceman

+0

Да, я только что опубликовал свой ответ ниже, а кто-то проголосовал за него. –