как обновить просмотр списка с помощью sqlite DB - PullRequest
1 голос
/ 29 июня 2011

я пытаюсь обновить мой список после того, как я удалил строку из БД SQLite.Это часть этого:

cursor = mysqlAdapter.fetchAll(); // a method from sqlite adater class 
ArrayList<MyInfo> vidRows = new ArrayList<MyInfo>(); 
if (cursor.moveToFirst()) { 
do { ...... } 
while (cursor.moveToNext()); } 
mList.setAdapter(new SomeAdapter(this, vidRows)); 
mList.setOnItemClickListener(this); 
registerForContextMenu(mList); } 

Тогда в моем getView я делаю:

public View getView(int position, View convertView, ViewGroup parent) { 
View vidRow = inflater.inflate(R.layout.queue_row, null); 
ImageView vidThumb = (ImageView) vidRow .findViewById(R.id.Thumb); 
Bitmap bmThumbnail; bmThumbnail = ThumbnailUtils.createVideoThumbnail(
                     getFullpath(vidItems.get(position).my_id), Thumbnails.MINI_KIND);      
vidThumb.setImageBitmap(bmThumbnail); 
TextView vidText = (TextView) vidRow .findViewById(R.id.vid_cap);
videoText.setText(vidItems.get(position).my_cap); return vidRow; } 

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Вы используете курсор? Если это так, вы можете просто позвонить:

cursor.requery();
0 голосов
/ 15 июля 2014

Я знаю, что это довольно старо, но я отвечу, если у кого-то еще возникнет такая же проблема, и она может помочь.

Вы можете использовать адаптер курсора и передать ему курсор, используя swapCursor (также работает при использовании onCursorLoader), тогда при удалении строки вы можете выполнить одно из следующих действий:

  1. удалить строку из вашей базы данных вне адаптера и затем вызвать adapter.notifyDataSetChanged ()

или

  1. вставьте базу данных в ваш адаптер и создайте метод удаления, чтобы при вызове adaptor.delete () обновлялся как список (если вы все еще используете его), так и база данных.
0 голосов
/ 29 июня 2011

Используете ли вы список для заполнения вашего ListView?Я бы предпочел сделать это вручную, как это -

myList.remove(delPos);
getListView().invalidateViews();
...