如何使用带有JSON URL的搜索edittext过滤列表视图

时间:2015-07-14 06:20:13

标签: android json listview

我正在使用edittext搜索表单JSON url数据,我给了搜索字段。搜索editText上的每个字母类型过滤listview,同时listview重新加载,如果edittext空显示所有当前列表。怎么样,请帮助我...

 @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();

    }

}
}

1 个答案:

答案 0 :(得分:0)

ServerSocket(int port)