如何使用搜索的EditText使用JSON的URL过滤列表视图视图、如何使用、列表、JSON

2023-09-05 23:10:22 作者:屌丝改造中i

我用EditText上进行搜索表单 JSON URL DATAS,我给搜索领域。搜索 EDITTEXT 每个字母型过滤列表视图,在同一时间列表视图重装,如果的EditText 空显示所有当前列表。如何在请帮我...

  @覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.electronic_main);

    搜索=(EditText上)findViewById(R.id.text_search);
    列表视图=(ListView控件)findViewById(R.id.listview);

    sea​​rch.addTextChangedListener(新TextWatcher(){
        @覆盖
        公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数,之后INT){

        }

        @覆盖
        公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){

            ArrayList的< HashMap的<字符串,字符串>> arrayTemplist =新的ArrayList< HashMap的<字符串,字符串>>();
            。串searchString = search.getText()的toString()与toLowerCase(Locale.getDefault());
            listview.setTextFilterEnabled(真正的);

            的for(int i = 0; I< arraylist.size();我++){
                字符串currentString = arraylist.get(I)获得(Electronic.WORKERNAME);
                字符串currentPlaceString = arraylist.get(I)获得(Electronic.LOCATION);
                字符串currentShopString = arraylist.get(I)获得(Electronic.SHOPNAME);



                如果(searchString.equalsIgnoreCase(currentString)||
                        sea​​rchString.equalsIgnoreCase(currentShopString)||
                        sea​​rchString.equalsIgnoreCase(currentPlaceString)){
                    arrayTemplist.add(arraylist.get(ⅰ));

                }
      }
            适配器=新ElectronicAdapter(Electronic.this,arrayTemplist);
            listview.setAdapter(适配器);
            adapter.notifyDataSetChanged();

        }


        @覆盖
        公共无效afterTextChanged(编辑S){
            adapter.notifyDataSetChanged();

        }
    });

    布尔isInternet present = cd.isConnectingToInternet(); // 对或错

    如果(isInternet present){
        新DownloadJSON()执行();

    } 其他 {

        意图失去了=新的意图(Electronic.this,NetConnection.class);
        startActivity(丢失);
    }


}


私有类DownloadJSON扩展的AsyncTask<虚空,虚空,布尔> {

    @覆盖
    在preExecute保护无效(){
        super.on preExecute();

        mProgressDialog =新ProgressDialog(Electronic.this);
        mProgressDialog.setMessage(载入中...);
        mProgressDialog.setIndeterminate(假);
        mProgressDialog.show();

    }

    @覆盖
    保护布尔doInBackground(空... PARAMS){


        ArrayList的=新的ArrayList< HashMap的<字符串,字符串>>();

        的JSONObject = JSONfunctions
                .getJSONfromURL(http://beta.json-generator.com/api/json/get/D0_dGQT);

        尝试 {

            jsonarray = jsonobject.getJSONArray(普电子);

            的for(int i = 0; I< jsonarray.length();我++){
                HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
                的JSONObject = jsonarray.getJSONObject(ⅰ);


                map.put(workername,jsonobject.getString(workername));
                map.put(SHOPNAME,jsonobject.getString(SHOPNAME));
                map.put(经验,jsonobject.getString(经验));
                map.put(票价,jsonobject.getString(收费));
                map.put(位置,jsonobject.getString(位置));
                map.put(等级,jsonobject.getString(等级));
                map.put(地址,jsonobject.getString(地址));
                map.put(workerimage,jsonobject.getString(workerimage));
                map.put(shopphoto,jsonobject.getString(shopphoto));
                map.put(细胞,jsonobject.getString(小区));


                arraylist.add(图)
            }

        }赶上(JSONException E){
            e.printStackTrace();
        }
        返回true;
    }


    @覆盖
    保护无效onPostExecute(布尔ARG){

        列表视图=(ListView控件)findViewById(R.id.listview);
        适配器=新ElectronicAdapter(Electronic.this,ArrayList的);

        listview.setAdapter(适配器);
        mProgressDialog.dismiss();

    }

}
}
 

解决方案

 搜索=(EditText上)findViewById(R.id.serach);
    列表视图=(ListView控件)findViewById(R.id.listview);
    listview.setOnItemClickListener(新OnItemClickListener(){

        @覆盖
        公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,
                长ARG3){
            // TODO自动生成方法存根
            。字符串GH = listview.getTextFilter()的toString();
            text.setText(GH);
        }
    });
    listview.setTextFilterEnabled(真正的);

    sea​​rch.addTextChangedListener(新TextWatcher(){

        @覆盖
        公共无效onTextChanged(CharSequence的arg0中,诠释ARG1,诠释ARG2,诠释ARG3){
            // TODO自动生成方法存根
             。串searchString = search.getText()的toString()与toLowerCase(Locale.getDefault());
             Log.d(@ w2w2w2w,+ searchString);
             INT RealText文件= searchString.length();
             arrayTemplist.clear();
             的for(int i = 0; I< arraylist.size();我++){
                    。字符串currentString = arraylist.get(I)获得(姓名)的toString();
                    。字符串currentPlaceString = arraylist.get(I)获得(城市)的toString();
                    。字符串currentShopString = arraylist.get(I)获得(landtype)的toString();
             if(realtext<=currentString.length()&&realtext<=currentPlaceString.length()&&realtext<=currentShopString.length())
             {


                    如果(searchString.equalsIgnoreCase(currentString.substring(0,RealText文件))||
                            sea​​rchString.equalsIgnoreCase(currentShopString.substring(0,RealText文件))||
                            sea​​rchString.equalsIgnoreCase(currentPlaceString.substring(0,RealText文件))){
                        arrayTemplist.add(arraylist.get(ⅰ));
                        适配器=新ListViewAdapter(Edit.this,arrayTemplist);
                        listview.setAdapter(适配器);
                    }
             }
             其他{

                adapter.notifyDataSetChanged();
             }


             }}

        @覆盖
        公共无效beforeTextChanged(CharSequence的arg0中,诠释ARG1,INT ARG2,
                INT ARG3){
            // TODO自动生成方法存根

        }

        @覆盖
        公共无效afterTextChanged(编辑为arg0){
            // TODO自动生成方法存根

        }
    });
    //执行DownloadJSON的AsyncTask

    }
 

python接口自动化39 JMESPath解析json数据

am using edittext for search form JSON url datas, i give search field. search each letter type on editText filter the listview, at same time listview reload, if edittext empty show all current list. how to that please help me...

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.electronic_main);

    search = (EditText) findViewById(R.id.text_search);
    listview = (ListView) findViewById(R.id.listview);

    search.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            ArrayList<HashMap<String, String>> arrayTemplist = new ArrayList<HashMap<String, String>>();
            String searchString = search.getText().toString().toLowerCase(Locale.getDefault());
            listview.setTextFilterEnabled(true);

            for (int i = 0; i < arraylist.size(); i++) {
                String currentString = arraylist.get(i).get(Electronic.WORKERNAME);
                String currentPlaceString = arraylist.get(i).get(Electronic.LOCATION);
                String currentShopString = arraylist.get(i).get(Electronic.SHOPNAME);



                if (searchString.equalsIgnoreCase(currentString) ||
                        searchString.equalsIgnoreCase(currentShopString) ||
                        searchString.equalsIgnoreCase(currentPlaceString)) {
                    arrayTemplist.add(arraylist.get(i));

                }
      }
            adapter = new ElectronicAdapter(Electronic.this, arrayTemplist);
            listview.setAdapter(adapter);
            adapter.notifyDataSetChanged();

        }


        @Override
        public void afterTextChanged(Editable s) {
            adapter.notifyDataSetChanged();

        }
    });

    Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false

    if (isInternetPresent) {
        new DownloadJSON().execute();

    } else {

        Intent lost = new Intent(Electronic.this, NetConnection.class);
        startActivity(lost);
    }


}


private class DownloadJSON extends AsyncTask<Void, Void, Boolean> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mProgressDialog = new ProgressDialog(Electronic.this);
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        mProgressDialog.show();

    }

    @Override
    protected Boolean doInBackground(Void... params) {


        arraylist = new ArrayList<HashMap<String, String>>();

        jsonobject = JSONfunctions
                .getJSONfromURL("http://beta.json-generator.com/api/json/get/D0_dGQT");

        try {

            jsonarray = jsonobject.getJSONArray("eletronics");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);


                map.put("workername", jsonobject.getString("workername"));
                map.put("shopname", jsonobject.getString("shopname"));
                map.put("experience", jsonobject.getString("experience"));
                map.put("fare", jsonobject.getString("fare"));
                map.put("location", jsonobject.getString("location"));
                map.put("Rating", jsonobject.getString("Rating"));
                map.put("address", jsonobject.getString("address"));
                map.put("workerimage", jsonobject.getString("workerimage"));
                map.put("shopphoto", jsonobject.getString("shopphoto"));
                map.put("cell", jsonobject.getString("cell"));


                arraylist.add(map);
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return true;
    }


    @Override
    protected void onPostExecute(Boolean arg) {

        listview = (ListView) findViewById(R.id.listview);
        adapter = new ElectronicAdapter(Electronic.this, arraylist);

        listview.setAdapter(adapter);
        mProgressDialog.dismiss();

    }

}
}

解决方案

search=(EditText)findViewById(R.id.serach);
    listview=(ListView)findViewById(R.id.listview);
    listview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            String gh = listview.getTextFilter().toString();
            text.setText(gh);
        }
    });
    listview.setTextFilterEnabled(true);

    search.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
            // TODO Auto-generated method stub
             String searchString = search.getText().toString().toLowerCase(Locale.getDefault());
             Log.d("@w2w2w2w",""+searchString);
             int realtext=searchString.length();
             arrayTemplist.clear();
             for (int i = 0; i < arraylist.size(); i++) {
                    String currentString = arraylist.get(i).get("Name").toString();
                    String currentPlaceString = arraylist.get(i).get("city").toString();
                    String currentShopString = arraylist.get(i).get("landtype").toString();
             if(realtext<=currentString.length()&&realtext<=currentPlaceString.length()&&realtext<=currentShopString.length())
             {


                    if (searchString.equalsIgnoreCase(currentString.substring(0,realtext)) ||
                            searchString.equalsIgnoreCase(currentShopString.substring(0,realtext)) ||
                            searchString.equalsIgnoreCase(currentPlaceString.substring(0,realtext))) {
                        arrayTemplist.add(arraylist.get(i));
                        adapter = new ListViewAdapter(Edit.this, arrayTemplist);
                        listview.setAdapter(adapter);
                    }
             }
             else{

                adapter.notifyDataSetChanged();
             }


             }}

        @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

        }
    });
    // Execute DownloadJSON AsyncTask

    }