listview获取错误的显示顺序

时间:2012-03-12 07:33:21

标签: android android-layout android-listview

我有ListView来显示类别项目,在此下方,我有一个在LinerLayout中写入的控制菜单,以及此应用程序顶部的EditText和go按钮。

第一次运行时一切都很好。但是,当我单击EditText进行输入时,菜单栏会在键盘出现后被拉起。现在,ListView的顺序已更改。

例如: 开始时:1会议2活动3时间表4提醒 后来的键盘显示和一切都拉了:1附表2提醒3会议4事件。

我还发现只有在没有足够的空间来展示整个ListView时才会出现此问题。

我在网上搜索了很长时间后无法解决这个问题。

这是我的布局和我的List 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 个答案:

答案 0 :(得分:2)

在您的AndroidManifest.xml文件中,在&lt; activity ...&gt;中定义,包括android:windowSoftInputMode="adjustPan",如此:

<activity
    android:name=".ClassName"
    android:windowSoftInputMode="adjustPan" >
    ...
</activity>

答案 1 :(得分:0)

在listadapter中使用getView()方法的convertView时,需要再次为每个视图设置文本。要全面了解列表视图的工作方式以及视图的回收方式,您应该在google I / O 2010中观看这些视频http://www.google.com/events/io/2010/sessions/world-of-listview-android.html