Сохранение последнего видимого элемента ListView при изменении размера ListView - PullRequest
31 голосов
/ 19 февраля 2012

То, что я хочу, просто, по крайней мере, я думал, что это будет просто.Я просто хочу окно, где EditText находится в нижней части экрана, а остальное пространство заполнено ListView.К сожалению, это не сработало, как я ожидал.То, что я хочу, это следующее изображение.Есть ли простой способ сделать это в XML, или я должен написать какой-то специальный код для этого?What I want

Исходный код моего проблемного Android.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
    android:id="@+id/demolist"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
     >
</ListView>
    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_weight="0">
    </EditText>
</LinearLayout >

Ответы [ 12 ]

0 голосов
/ 09 ноября 2012

Вам нужно установить позицию выбора ... Но - странным образом, я не очень понимаю, почему - вам нужно сделать это с помощью post ()

public void ScrollToLast() {
    yourList.clearFocus();
    yourList.post(new Runnable() {
        @Override
        public void run() {
            yourList.setSelection(items.size() - 1);
        }
    });
}

Таким образом, вы можете добавитьTextWatcher для вашего editText, и вы можете вызвать этот метод там ... Таким образом, ваш список будет прокручиваться вниз.

0 голосов
/ 19 февраля 2012

В вашем ListAdapter вы можете сделать что-то вроде этого:

   public View getView(int position, View convertView, ViewGroup parent) {

//buttonMore
if( position >= super.getCount()  )
      return textField ;

    ....

Таким образом, вы всегда получите свой последний элемент в списке как текстовое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...