Как изменять item listview не перерисовывая весь список?

Ответить
hanasaka
Сообщения: 1
Зарегистрирован: 29 мар 2015, 18:33

Как изменять item listview не перерисовывая весь список?

Сообщение hanasaka » 30 мар 2015, 00:31

Здравствуйте!
Имеется активити с выводом list при помощи SimpleCursorAdapter. При нажатии на любой item переносит в другой активити, где можно отредактировать запись. Далее по нажатию на back меня возвращает на первоначальное активити с первоначальным лист, однако item выглядит то неотредактированным. Можно конечно заново делать запрос на вывод всего list, однако хотелось бы запросить от базы только запись с id, которая редактировалась и изменить текст только одного item.
В первом активити я делал так:

Код: Выделить всё

lvMain.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent myIntent = new Intent(ShowAllList.this,
                        ShowPersonInfo.class);
                Cursor cursor = (Cursor) scAdapter.getItem(position);
                myIntent.putExtra("_id",
                        cursor.getString(cursor.getColumnIndex("_id")));
                myIntent.putExtra("position",
                        position);
                startActivity(myIntent);
            }
        });
Во втором:

Код: Выделить всё

public void onBackPressed() {
        if(isEdited){
            Intent intent = new Intent(this, ShowAllList.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("edit", isEdited);
            intent.putExtra("_id", id);
            intent.putExtra("position", position);
            startActivity(intent);
        }
        super.onBackPressed();
    }
И опять в первом:

Код: Выделить всё

@Override
    protected void onResume() {
        Intent intent = getIntent();
        if(intent.hasExtra("edit")){
            boolean edit = intent.getBooleanExtra("edit", false);
            if(edit){
                int position = intent.getIntExtra("position", -1);
                //Дальше как найти и менять текст в View элементе?
            }
        }
        super.onResume();
    }
Заранее спасибо!

Ответить