Android 如何在具有搜索功能的页面中加载listview

Android 如何在具有搜索功能的页面中加载listview,android,listview,search,Android,Listview,Search,我正在尝试实现一个listview,它第一次只显示10个项目。当用户点击“显示更多”按钮时,应加载20个项目。我做了这个,但是我只能在当前加载的列表中搜索。清单上有100项。所以当我第一次尝试搜索时,我只能搜索这10个项目 private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter>{ @Override protected SimpleAdapter

我正在尝试实现一个listview,它第一次只显示10个项目。当用户点击“显示更多”按钮时,应加载20个项目。我做了这个,但是我只能在当前加载的列表中搜索。清单上有100项。所以当我第一次尝试搜索时,我只能搜索这10个项目

private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter>{

        @Override
        protected SimpleAdapter doInBackground(String... strJson) {

            connector=new OpenerpRpc(getBaseContext());
            connector.Config();
            current_page += 1;
            try{
                Object login = connector.Login();
                Object tests2 = connector.searchWorkers("res.partner",new Object[0]);  
                Object[] ret_workers=(Object[])tests2;
                Object[] params_var = {"name","parent_id","partner_longitude","partner_latitude","street","zip","city","country_id"};
                Object test =  connector.Read("res.partner",ret_workers,params_var);
                Object[] ret=(Object[])test;
                int length = current_page*10;
                listOfFieldValues = new ArrayList<HashMap<String, Object>>(length); //ret.length
                int totalCount = 0;
                for (Object objectFields : ret) {
                    listOfFieldValues.add((HashMap<String, Object>)objectFields);
                }
            }catch(Exception e){
                Log.d("Exception", e.toString());
            }
            //String[] from = { "name","street"};
            String[] from = { "name"};
            // Ids of views in listview_layout
            int[] to = { R.id.tv_address};
            SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), listOfFieldValues, R.layout.lv_gps_layout, from, to);
            return adapter;
        }
        /** Invoked by the Android on "doInBackground" is executed */
        @Override
        protected void onPostExecute(final SimpleAdapter adapter) {
            // Setting adapter for the listview
            mListView.setAdapter(adapter);

            //for(int i=0;i<adapter.getCount();i++){
            for(int i=0;i<adapter.getCount();i++){
                HashMap<String, Object> hm = (HashMap<String, Object>) adapter.getItem(i);
                name = (String) hm.get("name");
                HashMap<String, Object> hmDownload = new HashMap<String, Object>();
                hm.put("name",name);
                adapter.notifyDataSetChanged();

                mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                        Intent myIntent = new Intent(MainActivity.this, YardActivity.class);
                        myIntent.putExtra("key", position); //Optional parameters
                        MainActivity.this.startActivity(myIntent);
                    }
                });

            }

            inputSearch = (EditText) findViewById(R.id.inputSearch);
            inputSearch.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {

                    adapter.getFilter().filter(cs);

                }
                @Override
                public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                              int arg3) {
                    // TODO Auto-generated method stub

                }
                @Override
                public void afterTextChanged(Editable arg0) {
                    // TODO Auto-generated method stub
                }
            });

            progress.dismiss();
            Log.d("/****","Data from odoo is finished");
        }
    }
私有类ListViewLoaderTask扩展异步任务{
@凌驾
受保护的SimpleAdapter doInBackground(字符串…strJson){
connector=new openerppc(getBaseContext());
connector.Config();
当前页面+=1;
试一试{
Object login=connector.login();
objecttests2=connector.searchWorkers(“res.partner”,新对象[0]);
对象[]ret_workers=(对象[])tests2;
Object[]params_var={“name”、“parent_id”、“partner_经度”、“partner_纬度”、“street”、“zip”、“city”、“country_id”};
对象测试=connector.Read(“res.partner”,ret_workers,params_var);
对象[]ret=(对象[])测试;
int length=当前页面*10;
listOfFieldValues=new ArrayList(长度);//ret.length
int totalCount=0;
for(对象对象字段:ret){
添加((HashMap)对象字段);
}
}捕获(例外e){
Log.d(“异常”,例如toString());
}
//字符串[]from={“name”,“street”};
字符串[]from={“name”};
//listview\u布局中的视图ID
int[]to={R.id.tv_address};
SimpleAdapter=new SimpleAdapter(getBaseContext(),listOfFieldValues,R.layout.lv\u gps\u layout,from,to);
返回适配器;
}
/**由Android在“doInBackground”上调用*/
@凌驾
受保护的void onPostExecute(最终SimpleAdapter适配器){
//设置listview的适配器
mListView.setAdapter(适配器);

//对于(inti=0;i我认为,更好的搜索方法是使用php


发送关键字(从应用程序发送到主机),然后以json的形式回复结果。

我看不出你为什么不能搜索所有100个项目。你应该只使用正确的列表。