我想從遠程服務器獲取一些信息,並在列表視圖中顯示該數據,我已經從服務器檢索到數據,但我不知道如何在列表視圖中顯示, 這裏是我的代碼,在這個代碼,我顯示一個列表視圖靜態數據,並試圖通過更新數據從服務器獲得該列表視圖,如何更新線程中的listview?
我不知道在哪裏更新列表視圖,請人幫我做這個
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/要這樣做,
對不起Ramamoorthy請嘗試更加具體,如果你問在計算器的問題。只是發佈代碼和希望解決方案將無法正常工作。 – Janusz
我想創建一個線程的列表視圖,是否有可能這樣做? – Ramamoorthy
只是一個友好的建議....請不要在一個問題中發佈數百行代碼。將示例代碼減少到足夠的代碼來展示您的問題。這樣你會得到更好的答案。請讀一下這篇文章:http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx – Kev