Android listview获取错误的显示顺序

Android listview获取错误的显示顺序,android,android-layout,android-listview,Android,Android Layout,Android Listview,我有一个ListView来显示类别项目,在下面,我有一个写在LinerLayout中的控制菜单,还有一个EditText和这个应用程序顶部的go按钮 第一次运行时一切正常。但是,当我单击EditText进行输入时,由于键盘出现,菜单栏被拉起。现在,列表视图的顺序已更改 例如: 开始时:1次会议2事件3附表4提醒 稍后键盘显示,一切都启动:1日程安排2提醒3会议4活动 我还发现,只有当没有足够的空间来显示整个列表视图时,才会出现此问题 我在网上搜索了很长时间后,还是解决不了这个问题 这是我的布局和

我有一个
ListView
来显示类别项目,在下面,我有一个写在LinerLayout中的控制菜单,还有一个
EditText
和这个应用程序顶部的go按钮

第一次运行时一切正常。但是,当我单击
EditText
进行输入时,由于键盘出现,菜单栏被拉起。现在,
列表视图的顺序已更改

例如: 开始时:1次会议2事件3附表4提醒 稍后键盘显示,一切都启动:1日程安排2提醒3会议4活动

我还发现,只有当没有足够的空间来显示整个
列表视图时,才会出现此问题

我在网上搜索了很长时间后,还是解决不了这个问题

这是我的布局和列表

    <?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();
        }

//在屏幕上写入项目
lv=(ListView)findViewById(R.id.items);
lv.setAdapter(indexadapter.getAdapter());
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(ItemClick);
//我的列表适配器基于数据库中的mData生成行
CategoryHolder CategoryHolder=null;
if(convertView==null){
//获取视图格式
CategoryHolder=新的CategoryHolder();
convertView=mInflater.inflate(R.layout.categoryshow,null);
CategoryHolder.category=(TextView)convertView.findViewById(R.id.indexcategory);
//设置重复使用的标签;
setTag(CategoryHolder);
//为每个项目设置文本;
CategoryHolder.category.setText((字符串)mData.get(位置).get(“category”);
}否则{
CategoryHolder=(CategoryHolder)convertView.getTag();
}

在您的AndroidManifest.xml文件中,在您的定义中,包括以下内容:

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

...

在listadapter中使用getView()方法的convertView时,需要再次为每个视图设置文本。为了充分了解列表视图是如何工作的以及视图是如何回收的,您应该从google I/O 2010中观看这些视频,向我们展示一些代码,(xml布局和您的
onCreate()
)听起来好像您不使用列表视图来滚动,而只是显示您的所有项目(对吗?)如果是这样,为什么要使用listview?dldnh的答案解决了这个问题。但我还是不知道为什么。你介意解释一下这到底是如何解决这个问题的吗?对我来说,这看起来只是一个神奇的解决方案,而不是一个合乎逻辑的解决方案。谢谢这就是为什么这样做的原因……活动的主窗口没有调整大小以为软键盘腾出空间。相反,窗口的内容会自动平移,以便当前焦点不会被键盘遮挡,用户可以随时看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能接触到窗口的模糊部分并与之交互。资料来源: