Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to Display json array to listview with AsyncTask?
    text
    copied!<p>Hello I am new for the android,so please let me know where I am wrong.</p> <p>I want convert the jsonarray into custom listview.I tried much but I don't get the solution. I got the value that I want into strValue1(please check the below code ,Activites_Activity.java). Now ,I want to pass this strValue1 into the listview. but I am not able to convert it into listview. </p> <p>so Please let me know what i should do?</p> <p>I got the error</p> <pre><code>04-17 12:52:55.795: E/AndroidRuntime(765): FATAL EXCEPTION: AsyncTask #1 04-17 12:52:55.795: E/AndroidRuntime(765): java.lang.RuntimeException: An error occured while executing doInBackground() 04-17 12:52:55.795: E/AndroidRuntime(765): at android.os.AsyncTask$3.done(AsyncTask.java:200) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.lang.Thread.run(Thread.java:1096) 04-17 12:52:55.795: E/AndroidRuntime(765): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewRoot.checkThread(ViewRoot.java:2802) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewRoot.focusableViewAvailable(ViewRoot.java:1596) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.View.setFlags(View.java:4474) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.view.View.setFocusableInTouchMode(View.java:3104) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.widget.AdapterView.checkFocus(AdapterView.java:694) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.widget.ListView.setAdapter(ListView.java:437) 04-17 12:52:55.795: E/AndroidRuntime(765): at com.rahul.cheerfoolz.activites.Activites_Activity$activites.doInBackground(Activites_Activity.java:141) 04-17 12:52:55.795: E/AndroidRuntime(765): at com.rahul.cheerfoolz.activites.Activites_Activity$activites.doInBackground(Activites_Activity.java:1) 04-17 12:52:55.795: E/AndroidRuntime(765): at android.os.AsyncTask$2.call(AsyncTask.java:185) 04-17 12:52:55.795: E/AndroidRuntime(765): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 04-17 12:52:55.795: E/AndroidRuntime(765): ... 4 more </code></pre> <p>Thanks.</p> <p>Activites_Activity.java</p> <pre><code>public class Activites_Activity extends CheerfoolznativeActivity { TextView txtactivity; ListView list; LazyAdapter adapter; ImageView img; ProgressBar pgb; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activites); setHeader("Activites"); /* list=(ListView)findViewById(R.id.activity_listView); adapter=new LazyAdapter(this, mImages,mTitle); list.setAdapter(adapter); */ txtactivity = (TextView) findViewById(R.id.activity_textView); img=(ImageView)findViewById(R.id.activity_image); pgb = (ProgressBar)findViewById(R.id.activity_progressBar); new activites().execute(); } public class activites extends AsyncTask&lt;Void, Void, Void&gt; { String parsedString = "\n"; String strValue1 ; public int i=0; @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); pgb.setVisibility(View.VISIBLE); } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub String url = " Here my json URL "; String strResponse = util.makeWebCall(url); try { JSONObject objResponse = new JSONObject(strResponse); JSONArray jsonnodes = objResponse.getJSONArray(API.cheerfoolz_activities.NODES); Log.i(" NO of entries===&gt;" +Activites_Activity.class.getName(),"Number of entries " + jsonnodes.length()); ArrayList&lt;String&gt; items = new ArrayList&lt;String&gt;(); for (i = 0; i &lt; jsonnodes.length(); i++) { String str = Integer.toString(i); Log.i("Value of i",str); JSONObject jsonnode = jsonnodes.getJSONObject(i); JSONObject jsonnodevalue = jsonnode.getJSONObject(API.cheerfoolz_activities.NODE); strValue1 = jsonnodevalue.getString(API.cheerfoolz_activities.TITLE); Log.i("JSONArray", strValue1); //parsedString += " \n\n Value of stored parse : =&gt; " + strValue1; parsedString = parsedString.trim(); //this will remove the blank white space items.add(strValue1); parsedString += " \n Value added in list =&gt; " + items; Log.i("Value of items : ", parsedString); } //List&lt;String&gt; list = Arrays.asList((String[])jsonnodes.toString()); //String[] values= new String[]{items.toString()}; //myListView.setListAdapter( /* list=(ListView)findViewById(R.id.activity_listView); // adapter=new LazyAdapter((Activity) getApplicationContext(), mImages,mTitle); list.setAdapter(adapter);*/ ListView myListView = (ListView)findViewById(R.id.activity_listView); myListView.setAdapter(new ArrayAdapter(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, items)); // ArrayAdapter&lt;String&gt; adapter= new ArrayAdapter&lt;String&gt;(Activites_Activity.this, android.R.layout.simple_list_item_1,items); // myListView.setAdapter(adapter); //Log.i("contact", items1 ); } catch (JSONException e) { e.printStackTrace(); txtactivity.setText(e.getMessage()); } return null; } @Override protected void onProgressUpdate(Void... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } @Override public void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); txtactivity.setText(parsedString); pgb.setVisibility(View.GONE); //img.setImageResource(parsedString); } } } </code></pre> <p>LazyAdapter.java</p> <pre><code>public class LazyAdapter extends BaseAdapter{ private Activity context; private String[] title; private String[] images; private LayoutInflater inflater; public LazyAdapter(Activity context,String[] img ,String[] title) { super(); this.context = context; this.title = title; this.images = img; this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return title.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public static class ViewHolder { ImageView imgViewLogo; TextView txtViewTitle; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if(convertView==null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.activity_listitem, null); holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.activity_list_logo); holder.txtViewTitle = (TextView) convertView.findViewById(R.id.activity_list_title); convertView.setTag(holder); } else holder=(ViewHolder)convertView.getTag(); // holder.imgViewLogo.setImageResource(images[position]); holder.txtViewTitle.setText(title[position]); return convertView; } } </code></pre> <p>makeWebCall.class</p> <pre><code>public static String makeWebCall(String url) { DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpRequest = new HttpGet(url); try { HttpResponse httpResponse = client.execute(httpRequest); final int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { /* Log.i(getClass().getSimpleName(), "Error =&gt; " + statusCode + " =&gt; for URL " + url);*/ return null; } HttpEntity entity = httpResponse.getEntity(); InputStream is = entity.getContent(); return iStream_to_String(is); } catch (IOException e) { httpRequest.abort(); // Log.w(getClass().getSimpleName(), "Error for URL =&gt;" + url, e); } return null; } public static String iStream_to_String(InputStream is1) { BufferedReader rd = new BufferedReader(new InputStreamReader(is1), 4096); String line; StringBuilder sb = new StringBuilder(); try { while ((line = rd.readLine()) != null) { sb.append(line); } rd.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String contentOfMyInputStream = sb.toString(); return contentOfMyInputStream; } </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