エントリをクリックすると変更できるリストビューを作成しようとしています。確認を押した後も、上にスクロールするのではなく、変更したばかりのエントリが表示されます。
アドバイスされた変更を行い、編集アクティビティを終了した後も上部にスクロールし、正しいスクロール位置が見つかりません。私は何かを逃していますか?
static int firstPosition = 0;
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor c = mNotesCursor;
ListView mListView = getListView();
firstPosition = mListView.getFirstVisiblePosition();
c.moveToPosition(position);
Intent i = new Intent(this, QuoteEdit.class);
i.putExtra(QuotesDBAdapter.KEY_ROWID, id);
i.putExtra(QuotesDBAdapter.KEY_QUOTES, c.getString(
c.getColumnIndexOrThrow(QuotesDBAdapter.KEY_QUOTES)));
startActivityForResult(i, ACTIVITY_EDIT);
}
public void onResume(int requestCode, int resultCode, Intent intent) {
ListView mListView = getListView();
if (mListView != null && firstPosition >= 0){
mListView.scrollTo(0,firstPosition);
// mListView.setSelection(firstPosition);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
try {
super.onActivityResult(requestCode, resultCode, intent);
Bundle extras = intent.getExtras();
switch(requestCode) {
case ACTIVITY_CREATE:
String title = extras.getString(QuotesDBAdapter.KEY_QUOTES);
mDbHelper.createQuote(title);
break;
case ACTIVITY_EDIT:
ListView mListView = getListView();
Long rowId = extras.getLong(QuotesDBAdapter.KEY_ROWID);
if (rowId != null) {
String editTitle = extras.getString(QuotesDBAdapter.KEY_QUOTES);
mDbHelper.updateQuote(rowId, editTitle);
mListView.setSelection(firstPosition);
}
fillData();
break;
}
}
catch (Exception ex){
Context context = getApplicationContext();
CharSequence text = ex.toString();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}