Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to make filtered items to displayed in listview using search functionality(android)
    text
    copied!<p>I have a edittext, search button and listview in my activity, based on the keyword given in the edittext box all the related items should be displayed in the listview, now i'm able to get the those related items in toast, that is all the related items gets poped up one by one in toast and gets diappeared, but i want it be in displayed in listview, how will i make it? here's my code </p> <pre><code>public class Home extends ListActivity { ArrayList&lt;HashMap&lt;String, String&gt;&gt; songsList; ListView list; LazyAdapter adapter; JSONArray posts; //ArrayList thats going to hold the search results ArrayList&lt;HashMap&lt;String, String&gt;&gt; searchResults; LayoutInflater inflater; // All static variables static final String URL = "http://www.example.com/ads/?json=get_recent_posts"; static final String KEY_POSTS = "posts"; static final String KEY_ID = "id"; static final String KEY_TITLE = "title"; static final String KEY_DATE = "date"; static final String KEY_CONTENT = "content"; static final String KEY_AUTHOR = "author"; static final String KEY_NAME = "name"; static final String KEY_ATTACHMENTS = "attachments"; static final String KEY_SLUG = "slug"; static final String KEY_THUMB_URL = "thumbnail"; static final String KEY_IMAGES = "images"; static final String KEY_URL = "url"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText searchBox=(EditText) findViewById(R.id.search); final ListView list=(ListView)findViewById(android.R.id.list); //get the LayoutInflater for inflating the customomView //this will be used in the custom adapter inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ArrayList&lt;HashMap&lt;String, String&gt;&gt; songsList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); // Creating JSON Parser instance final JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(URL); try { posts = json.getJSONArray(KEY_POSTS); // looping through all song nodes &lt;song&gt; for(int i = 0; i &lt; posts.length(); i++){ JSONObject c = posts.getJSONObject(i); // Storing each json item in variable String id = c.getString(KEY_ID); String title = c.getString(KEY_TITLE); String date = c.getString(KEY_DATE); String content = c.getString(KEY_CONTENT); // to remove all &lt;P&gt; &lt;/p&gt; and &lt;br /&gt; and replace with "" content = content.replace("&lt;br /&gt;", ""); content = content.replace("&lt;p&gt;", ""); content = content.replace("&lt;/p&gt;", ""); //authornumber is agin JSON Object JSONObject author = c.getJSONObject(KEY_AUTHOR); String name = author.getString(KEY_NAME); String url = null; String slug = null; try { JSONArray atta = c.getJSONArray("attachments"); for(int j = 0; j &lt; atta.length(); j++){ JSONObject d = atta.getJSONObject(j); slug = d.getString(KEY_SLUG); JSONObject images = d.getJSONObject(KEY_IMAGES); JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL); url = thumbnail.getString(KEY_URL); } } catch (Exception e) { e.printStackTrace(); } // creating new HashMap HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); // adding each child node to HashMap key =&gt; value map.put(KEY_ID, id); map.put(KEY_TITLE, title); map.put(KEY_DATE, date); map.put(KEY_NAME, name); map.put(KEY_CONTENT, content); map.put(KEY_SLUG, slug); map.put(KEY_URL, url); // adding HashList to ArrayList songsList.add(map); } }catch (JSONException e) { e.printStackTrace(); } //searchResults=OriginalValues initially searchResults=new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(songsList); // Getting adapter by passing json data ArrayList adapter=new LazyAdapter(this, songsList); list.setAdapter(adapter); searchBox.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { //get the text in the EditText String searchString=searchBox.getText().toString(); int textLength=searchString.length(); //clear the initial data set searchResults.clear(); for(int i=0;i&lt;songsList.size();i++) { String playerName=songsList.get(i).get("title").toString(); if(textLength&lt;=playerName.length()){ //compare the String in EditText with Names in the ArrayList if(searchString.equalsIgnoreCase(playerName.substring(0,textLength))) Toast.makeText(getApplicationContext(),playerName,1).show(); searchResults.add(songsList.get(i)); } } adapter.notifyDataSetChanged(); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); // Launching new screen on Selecting Single ListItem list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { HashMap&lt;String, String&gt; map = songsList.get(position); Intent in = new Intent(Home.this, Singlemenuitem.class); in.putExtra(KEY_TITLE, map.get(KEY_TITLE)); in.putExtra(KEY_DATE, map.get(KEY_DATE)); in.putExtra(KEY_NAME, map.get(KEY_NAME)); in.putExtra(KEY_CONTENT, map.get(KEY_CONTENT)); in.putExtra(KEY_URL, map.get(KEY_URL)); startActivity(in); } }); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload