listview получает неправильный порядок отображения - PullRequest
1 голос
/ 12 марта 2012

У меня есть ListView для отображения элементов категории, ниже этого у меня есть меню управления, написанное в LinerLayout, а также EditText и кнопка «Перейти» в верхней части этого приложения.

Все хорошо в первый раз. однако, когда я нажимаю EditText для ввода, появляется строка меню, так как появляется клавиатура. Теперь порядок ListView был изменен.

пример: в начале: 1 встреча 2 событие 3 расписание 4 напоминание Позже показывается клавиатура и все останавливается: 1 Расписание 2 Напоминание 3 Встреча 4 Событие.

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

Я не могу решить эту проблему после долгого поиска в интернете.

Это мой макет и мой список Apdater

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout ...>
        <ListView
            android:id="@+id/items"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/widget53"/>

        <LinearLayout
            android:id="@+id/widget39"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true" >

            <ImageButton ../>

            <ImageButton ../>

            <ImageButton ../>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/widget53"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >

            <Button ../>

            <EditText .. />
        </LinearLayout>
    </RelativeLayout>
//Write item on the screen
    lv = (ListView)findViewById(R.id.items);
            lv.setAdapter(indexadapter.getAdapter());
            lv.setTextFilterEnabled(true);
            lv.setOnItemClickListener(ItemClick);
//My list Adapter generate rows base on mData from database
    CategoryHolder CategoryHolder = null;
        if (convertView == null) {
            //getting view format
            CategoryHolder = new CategoryHolder();
            convertView = mInflater.inflate(R.layout.categoryshow, null);
            CategoryHolder.category=(TextView)convertView.findViewById(R.id.indexcategory);
        //setting tag for reuse;
            convertView.setTag(CategoryHolder);
        //setting text for each item;
        CategoryHolder.category.setText((String)mData.get(position).get("CATEGORY"));
        }else{
            CategoryHolder = (CategoryHolder)convertView.getTag();
        }

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

в вашем файле AndroidManifest.xml, в вашем определении , включите android:windowSoftInputMode="adjustPan" примерно так:

<activity
    android:name=".ClassName"
    android:windowSoftInputMode="adjustPan" >
    ...
</activity>
0 голосов
/ 12 марта 2012

Когда вы используете convertView метода getView () в вашем listadapter, вам нужно снова установить текст для каждого представления.Чтобы полностью понять, как работают списки и как они перерабатываются, вы должны посмотреть это видео в Google I / O 2010 http://www.google.com/events/io/2010/sessions/world-of-listview-android.html

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