2015-02-11 4 views
2

У меня есть список в моем проекте, в нем есть изображение и информация.
SO предполагают, что он содержит информацию о 50 человек. Теперь, если я хочу удалить последние два элемента, после удаления последнего элемента listlview автоматически фокусируется в верхней части списка.
Итак, теперь пользователь прокручивает весь элемент до 49-го элемента и удаляет его.
Итак, есть ли способ исправить положение listview в этой позиции, откуда я удаляю элемент.Listview автоматически прокручивается наверх

// код для удаления информации

public void deleteFeed(int rowID) { 
     // fetch the image File name 
     Cursor cursor = dbAdapter.getTimelineFeedByID(mSysPrefs.getBabyID(), rowID); 
     if(cursor != null && cursor.moveToFirst()) { 
      // fetch from DB Cursor 
      String imageFileName = cursor.getString(cursor.getColumnIndex(DatabaseAppHelper.KEY_IMAGENAME)); 
      File file = new File(GlobalConstants.FILE_PATH, imageFileName + GlobalConstants.IMAGE_EXTENSION); 
      if(file.exists()) { 
       file.delete(); 
      } 
      //listview.smoothScrollToPosition(0, listview.getHeight()); 
      listview.smoothScrollToPosition(0, listview.getBottom()); 
     } 
     // now delete the record from the DB  
     if(dbAdapter.deleteTimelineFeed(rowID) != -1) { 
      onResume(); 
     } else { 
      Toast.makeText(this, "Please try again..", Toast.LENGTH_LONG).show(); 
     } 
    } 

// код для создания списке следует

@Override 
protected void onResume() { 
    super.onResume(); 
    turnGPSOn(); // method to turn on the GPS if its in off state. 
    getMyCurrentLocation(); 
    dbAdapter.openDBConnection(); 
    new Handler().post(new Runnable() { 
     @Override 
     public void run() { 
      timelineCursorAdapter = new TimelineCursorAdapter(TimelineViewActivity.this, 
        dbAdapter.getAllTimelineFeedsForBaby(mSysPrefs.getBabyID()), 0); 
      listview.setAdapter(timelineCursorAdapter); 
      //timelineCursorAdapter.notifyDataSetChanged(); 
      listview.invalidateViews(); 

     } 
    }); 
} 
+0

Try 'listView.setSelectionAfterHeaderView();' или 'list.smoothScrollToPosition (0);' –

+0

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

ответ

1

Получить позицию из вы удалили элемент, а затем передать позицию метода setselection так: listview.setSelection(pos);

+0

Частично решен проблема. Еще одна проблема у меня есть и в ней. –

0

Попробуйте с ниже код

Перед удалением элементов списка получить видимое положение с помощью кода ниже

 mIndex = listView.getFirstVisiblePosition(); 
     View v = listView.getChildAt(0); 
     mTop = (v == null) ? 0 : v.getTop(); 

После удаления элементов установлено, что положение его в список

listView.setSelectionFromTop(mIndex, mTop); 
Смежные вопросы