2016-03-16 4 views
0

В настоящее время, в другом class, мне нужно удалить 1 элемент, когда я загружаю успешный файл с вызовом deleteCallWhenUploadSuccess. В этом классе я использую fileName определенному предмету, который необходимо удалить.Как удалить элемент из списка на Android с помощью SQLiteOpenHelper?

Но это не удаляет элемент в ListView из Layout activity_call_history.xml

В классе DAO я удалю с кодом:

public void deleteCallWhenUploadSuccess(String fileNameWhis) 
{ 
    db = callDatabaseHelper.getWritableDatabase(); 
    String where = CallDatabaseHelper.FILE_NAME + "='" + fileNameWhis + "'"; 
    db.delete(CallDatabaseHelper.TABLE_NAME, where, null); 
} 

И в другом классе я его с помощью:

DAO.deleteCallWhenUploadSuccess(filename);

Я пишу код, чтобы удалить элемент в ListView в случае onActionItemClicked.

На DAO class я начинаю удалить элемент с RowId:

public void deleteCallV2(int rowId) { 
    db = callDatabaseHelper.getReadableDatabase(); 
    Cursor cursor = db.rawQuery("select * from "+CallDatabaseHelper.TABLE_NAME+" where rowId = "+String.valueOf(rowId),null); 
    while(cursor.moveToNext()){ 
    this.rowId = CallDatabaseHelper.ROW_ID +"="+cursor.getString(cursor.getColumnIndex(CallDatabaseHelper.ROW_ID)); 
    } 
    db.delete(CallDatabaseHelper.TABLE_NAME, this.rowId, null); 

} 

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

@Override 
public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.deleteAction: 
      // Calls getSelectedIds method from ListViewAdapter Class 
      selected = historyAdapter 
        .getSelectedIds(); 
      // Captures all selected ids with a loop 
      for (int i = (selected.size() - 1); i >= 0; i--) { 
       if (selected.valueAt(i)) { 
        Call selecteditem = historyAdapter 
          .getItem(selected.keyAt(i)); 
        // Remove selected items following the ids 

        historyAdapter.remove(selecteditem); 
       } 
      } 
        getFragmentManager().beginTransaction().replace(R.id.container,new HistoryFragment()).commit(); 
      // Close CAB 
      mode.finish(); 
      return true; 
     case R.id.allAction: 
      historyAdapter.toggleAll(listView); 
      Toast.makeText(getActivity(), "Đã chọn tất cả", Toast.LENGTH_SHORT).show(); 
      return true; 
     default: 
      return false; 
    } 
} 

Но это работает, когда я выбираю элемент с длинным нажатием и выбираю элемент или выбираю все, чтобы удалить. Он использует ID для удаления элемента.

+0

Трудный был языку меня. Я не понимал. :) –

ответ

0

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

немного кода, которые демонстрируют эту задачу

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

Спасибо. Но я хочу, когда функция UploadSucess = true, тогда она автоматически удалит строки (элемент) в ListView. Ваш код, когда onItemClick, удалит строки. – lan

+0

, так что просто проверьте с условием if if (UploadSucess) '{удалить такой элемент и notifyDatasetChanged();}' Основная вещь, которая будет сделана, будет только – 1shubhamjoshi1

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