
这是我的代码,在这段代码中,我已经显示了一个包含静态数据的列表视图,并尝试通过从服务器获取的数据更新此列表视图,
我不知道在哪里更新列表视图,请任何人帮我这样做
package com.ListvIEw;import java.io.BufferedReader;import java.io.inputStream;import java.io.inputStreamReader;import java.util.ArrayList;import org.apache.http.httpentity;import org.apache.http.httpResponse;import org.apache.http.nameValuePair;import org.apache.http.clIEnt.httpClIEnt;import org.apache.http.clIEnt.entity.UrlEncodedFormEntity;import org.apache.http.clIEnt.methods.httpPost;import org.apache.http.impl.clIEnt.DefaulthttpClIEnt;import org.Json.JsONArray;import org.Json.JsONException;import org.Json.JsONObject;import androID.app.ListActivity;import androID.net.ParseException;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.AdapterVIEw;import androID.Widget.ArrayAdapter;import androID.Widget.ListVIEw;import androID.Widget.TextVIEw;import androID.Widget.Toast;import androID.Widget.AdapterVIEw.OnItemClickListener;public class ListVIEwActivity extends ListActivity {/** Called when the activity is first created. */private ThreadTest mThreadTest;ArrayList<String > arList;public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mThreadTest=new Threadtest(); Thread tt=new Thread(mThreadTest); tt.start(); //create a static arrayList to display it in ListvIEw arList = new ArrayList<String>(); arList.add("xxxxxxxxxxxx"); arList.add("yyyyyyyyyyyy"); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.List_item,arList); setlistadapter(arrayAdapter); //create ListvIEw ListVIEw lv = getListVIEw(); lv.setTextFilterEnabled(true); lv.setonItemClickListener(new OnItemClickListener() { public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) {// When clicked,show a toast with the TextVIEw text Toast.makeText(getApplicationContext(),((TextVIEw) vIEw).getText(),Toast.LENGTH_SHORT).show(); } }); }static public class ThreadTest implements Runnable{ ListVIEwActivity li=new ListVIEwActivity(); JsONArray jArray; String result = null; inputStream is = null; StringBuilder sb=null; public ArrayList al,arrayList; public voID run() {//get some details from Remote Server as Json string ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(); try { httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpPost httppost = new httpPost("http://xxxxxxxxx/clIEnts/yyyyyy/city.PHP"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpResponse response = httpclIEnt.execute(httppost); httpentity entity = response.getEntity(); is = entity.getContent(); } catch(Exception e) { Log.e("log_tag","Error in http connection "+e.toString()); } try{ BufferedReader reader = new BufferedReader(new inputStreamReader(is,"iso-8859-1"),8); sb = new StringBuilder(); sb.append(reader.readline() + "\n"); String line="0"; while ((line = reader.readline()) != null) { sb.append(line ); } is.close(); result=sb.toString();/************************************** * result is [{"city_ID":"1","city_name":"madurai"},{"city_ID":"2","city_name":"coimbatore"},{"city_ID":"3","city_name":"chennai"}] *///parse the Json string values JsONArray array = new JsONArray(result); for (int i = 0; i < array.length(); i++) { JsONObject row = array.getJsONObject(i); int ID = row.getInt("city_ID"); String name = row.getString("city_name");//add the cityname to arrayList to display it in ListvIEw after the thread exeucted arrayList.add(name); } } catch(Exception e) { Log.e("log_tag","Error converting result "+e.toString()); } }} }
我在http://www.sitepoint.com/loading-twitter-data-into-android-with-lists/找到了一个很好的教程来做到这一点,
解决方法 要更新UI,您应该在线程中调用UI线程,如下所示runOnUiThread(new Runnable() { @OverrIDe public voID run() { ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,arList); setlistadapter(arrayAdapter); } }); 总结 以上是内存溢出为你收集整理的android – 如何更新线程中的listview?全部内容,希望文章能够帮你解决android – 如何更新线程中的listview?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)