单击搜索按钮时,Android listview会滚动到底部

单击搜索按钮时,Android listview会滚动到底部,android,listview,Android,Listview,我已经用搜索工具实现了listview。搜索按钮位于操作栏中,使用以下代码一切正常 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.top_right, menu); MenuItem searc

我已经用搜索工具实现了listview。搜索按钮位于操作栏中,使用以下代码一切正常

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.top_right, menu);
    MenuItem searchItem = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    //*** setOnQueryTextFocusChangeListener ***
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {

        }
    });

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            return false;
        }

        @Override
        public boolean onQueryTextChange(String searchQuery) {
                myAppAdapter.filter(searchQuery.toString().trim());
                listView.invalidate();
            return true;
        }
    });

    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when collapsed
            return true;  // Return true to collapse action view
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Do something when expanded
            return true;  // Return true to expand action view
        }
    });
    return true;
} 
以下是我的XML:

    <ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/appBar"
    android:choiceMode="multipleChoice"
    android:id="@+id/list1"
    android:layout_above="@+id/txtTotal" />

我的搜索功能工作正常,但问题是当有人单击搜索按钮时,整个listview会滚动到底部。我怎样才能解决这个问题? 提前谢谢

注意:我已经搜索了stackoverflow以查找此类问题,但没有找到任何问题。如果有,请与我分享链接

编辑:有关我的适配器的其他信息。如评论部分所述

     public class MyAppAdapter extends BaseAdapter {
    public class ViewHolder {
        TextView txtName;
        CheckBox chkItem;
    }

    public List<ClassOrder> parkingList;

    public Context context;
    ArrayList<ClassOrder> arraylist;

    private MyAppAdapter(List<ClassOrder> apps, Context context) {
        this.parkingList = apps;
        this.context = context;
        arraylist = new ArrayList<ClassOrder>();
        arraylist.addAll(parkingList);
    }

    @Override
    public int getCount() {
        return parkingList.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        View rowView = convertView;
        /*ViewHolder viewHolder;*/

        if (rowView == null) {
            LayoutInflater inflater = getLayoutInflater();
            rowView = inflater.inflate(R.layout.list_xml, null);
            // configure view holder
            viewHolder = new ViewHolder();
            viewHolder.chkItem = (CheckBox) rowView.findViewById(R.id.chkItem);
            rowView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.txtName.setText(parkingList.get(position).getItemDetail() + "");
        viewHolder.chkItem.setFocusable(false);
        viewHolder.chkItem.setChecked(positionArray.get(position));

        return rowView;
    }
}
公共类MyAppAdapter扩展BaseAdapter{
公共类视图持有者{
TextView-txtName;
chkItem;
}
公共列表停车列表;
公共语境;
ArrayList ArrayList;
私有MyAppAdapter(列出应用程序、上下文){
this.parkingList=应用程序;
this.context=上下文;
arraylist=新的arraylist();
arraylist.addAll(parkingList);
}
@凌驾
public int getCount(){
返回parkingList.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
/*持票人持票人*/
if(rowView==null){
LayoutInflater充气机=getLayoutInflater();
rowView=充气机.充气(R.layout.list_xml,null);
//配置视图保持架
viewHolder=新的viewHolder();
viewHolder.chkItem=(复选框)rowView.findviewbyd(R.id.chkItem);
rowView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.txtName.setText(parkingList.get(position.getItemDetail()+);
viewHolder.chkItem.setFocusable(假);
viewHolder.chkItem.setChecked(positionArray.get(position));
返回行视图;
}
}
我的列表\u xml:

    <RelativeLayout
    android:layout_width="match_parent"
    android:id="@+id/ac"
    android:padding="10dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtSub"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        app:srcCompat="@mipmap/ic_launcher"
        android:id="@+id/imageView2"
        android:layout_marginRight="5dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:text="menu name"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/txtName"
        android:textSize="14sp"
        android:textStyle="bold"
        android:textColor="@color/colorPrimary"
        android:gravity="center|left"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imageView2"
        android:layout_toEndOf="@+id/imageView2"
        android:layout_alignBottom="@+id/imageView2" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:button="@null"
        android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
        android:buttonTint="@color/colorPrimary"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:gravity="right|center"
        android:id="@+id/chkItem"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignBottom="@+id/txtName"
        android:layout_toRightOf="@+id/txtName"
        android:layout_toEndOf="@+id/txtName" />

</RelativeLayout>

事实上,我无意中在搜索菜单按钮的上单击了。这导致listview向下滚动

 listView.smoothScrollToPosition(myAppAdapter.getCount());

很抱歉,我搜索了所有代码,但没有搜索onClick事件。感谢大家和花时间解决此问题的StackOverflovians。我再次感到抱歉

我猜这是adapter的一个问题,在adapter中,每一项在添加时都会获得焦点<代码>列表视图通过滚动跟随焦点(到最后一个子项)。显示一些关于adapter@snachmsm过来看。我编辑了我的问题。你能展示一下你的
R.layout.list\u xml
,也许那里正在获得关注。。。此外,如果rowView==null加上
充气机。充气(R.layout.list_xml,null),您还可以尝试移动
setFocusable
并将
setClickable
添加到
->
充气器。充气(R.layout.list\u xml,父项,false)。让孩子知道你所说的一切都结束了。但问题仍然是一样的。谢谢你宝贵的时间:)