So implementieren Sie eine Suche nach einer ListView, die ListAdapater, ArrayList und HashMap verwendet

Ich habe eine Listenansicht, die ich aus einem JSON-Array auffülle. Zuerst werden die Werte aus dem JSON-Array extrahiert und dann in eine HashMap geschrieben. Dann wird diese HashMap zu einer ArrayList hinzugefügt. Von hier aus werden die erforderlichen Daten zu einem ListAdapter hinzugefügt.

Ich habe seit Tagen online gesucht, um eine Möglichkeit zu finden, eine Suchfunktion hinzuzufügen, aber keine von ihnen verwendet diese Kombination aus ListAdapater, ArrayList und HashMap. Ich bin ein Anfänger, kann mir jemand helfen, dies zu tun?

Das ist mein Code

public class ListNew extends Activity {
ListView list;
TextView eid;
TextView ename; 
TextView edesc;
//Button Btngetdata;
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();

//URL to get JSON Array
private static String url = "somelink";

//JSON Node Names 
private static final String TAG_OS = "events";
private static final String TAG_EID = "eid";
private static final String TAG_ENAME = "ename";
private static final String TAG_ETYPE = "etype";
private static final String TAG_EDESC = "edesc";
private static final String TAG_ESDATE = "esdate";
private static final String TAG_EEDATE = "eedate";
private static final String TAG_ESTIME = "estime";
private static final String TAG_EETIME = "eetime";
private static final String TAG_LOCATION = "location";
private static final String TAG_CREATED_AT = "created_at";
private static final String TAG_EDITED_AT = "edited_at";
private static final String TAG_CREATEDBY = "createdby";
private static final String TAG_IMAGE = "image";
private static final String TAG_APPROVED = "approved";

EditText inputSearch;
ListAdapter adapter;


public static final String TABLE_EVENT = "event";



JSONArray events = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //from here
    inputSearch = (EditText) findViewById(R.id.etSearch);

    setContentView(R.layout.listnew);
    oslist = new ArrayList<HashMap<String, String>>();

    new JSONParse().execute();


}

private class JSONParse extends AsyncTask<String, String, JSONObject> {
     private ProgressDialog pDialog;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
         eid = (TextView)findViewById(R.id.vers);
         ename = (TextView)findViewById(R.id.name);
         edesc = (TextView)findViewById(R.id.api);
        pDialog = new ProgressDialog(ListNew.this);
        pDialog.setMessage("Getting Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();



    }

    @Override
    protected JSONObject doInBackground(String... args) {

        JSONParser jParser = new JSONParser();

        // Getting JSON from URL
        JSONObject json = jParser.getJSONFromUrl2(url);
        return json;
    }
     @Override
     protected void onPostExecute(JSONObject json) {
         pDialog.dismiss();
         try {
                // Getting JSON Array from URL
                events = json.getJSONArray(TAG_OS);
                for(int i = 0; i < events.length(); i++){
                JSONObject c = events.getJSONObject(i);

                // Storing  JSON item in a Variable
                String eid = c.getString(TAG_EID);
                String ename = c.getString(TAG_ENAME);
                String etype = c.getString(TAG_ETYPE);
                String edesc = c.getString(TAG_EDESC);
                String esdate = c.getString(TAG_ESDATE);
                String eedate = c.getString(TAG_EEDATE);
                String estime = c.getString(TAG_ESTIME);
                String eetime = c.getString(TAG_EETIME);
                String location = c.getString(TAG_LOCATION);
                String created_at = c.getString(TAG_CREATED_AT);
                String edited_at = c.getString(TAG_EDITED_AT);
                String createdby = c.getString(TAG_CREATEDBY);
                String image = c.getString(TAG_IMAGE);
                String approved = c.getString(TAG_APPROVED);

                HashMap<String, String> map = new HashMap<String, String>();

                map.put(TAG_EID, eid);
                map.put(TAG_ENAME, ename);
                map.put(TAG_ETYPE, etype);
                map.put(TAG_EDESC, edesc);
                map.put(TAG_ESDATE, esdate);
                map.put(TAG_EEDATE, eedate);
                map.put(TAG_ESTIME, estime);
                map.put(TAG_EETIME, eetime);
                map.put(TAG_LOCATION, location);
                map.put(TAG_CREATED_AT, created_at);
                map.put(TAG_EDITED_AT, edited_at);
                map.put(TAG_CREATEDBY, createdby);
                map.put(TAG_IMAGE, image);
                map.put(TAG_APPROVED, approved);


                oslist.add(map);
                list=(ListView)findViewById(R.id.list);
                TextView emptyText = (TextView)findViewById(R.id.empty);
                list.setEmptyView(emptyText);

                //Log.d("TAG_is d first one", TAG_APPROVED + "," + approved);



                adapter = new SimpleAdapter(ListNew.this, oslist,
                        R.layout.list_v,
                        new String[] { TAG_ENAME,TAG_CREATEDBY, TAG_CREATED_AT }, new int[] {
                                R.id.vers,R.id.name, R.id.api});


                list.setAdapter(adapter);

                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
                        Intent i = new Intent(ListNew.this, NewEvent.class);
                        i.putExtra("eid", oslist.get(+position).get("eid") ); 
                        i.putExtra("ename", oslist.get(+position).get("ename") );
                        i.putExtra("etype", oslist.get(+position).get("etype") );
                        i.putExtra("edesc", oslist.get(+position).get("edesc") );
                        i.putExtra("esdate", oslist.get(+position).get("esdate") );
                        i.putExtra("eedate", oslist.get(+position).get("eedate") );
                        i.putExtra("estime", oslist.get(+position).get("estime") );
                        i.putExtra("eetime", oslist.get(+position).get("eetime") );
                        i.putExtra("location", oslist.get(+position).get("location") );
                        i.putExtra("created_at", oslist.get(+position).get("created_at") );
                        i.putExtra("edited_at", oslist.get(+position).get("edited_at") );
                        i.putExtra("createdby", oslist.get(+position).get("createdby") );
                        i.putExtra("image",  byteArray);
                        i.putExtra("approved", oslist.get(+position).get("approved") );
                        startActivity(i);

                    }
                });


            }//end if
        } catch (JSONException e) {
            e.printStackTrace();
        }




     }


}

}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage