aktualisieren einer listview im thread?
möchte ich einige Informationen von dem entfernten server, und anzeigen, dass Daten in der listview habe ich die Daten abgerufen vom server, aber ich weiß nicht, wie angezeigt, in der Listenansicht
hier ist mein code, in diesem code, den ich angezeigt haben eine listview mit statischen Daten und versucht, diese Liste zu aktualisieren, Ansicht, indem Sie die Daten abrufen vom server,
ich weiß nicht, wo die Liste zu aktualisieren anzuzeigen, bitte jemand mir helfen, dies zu tun
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());
}
}
}
}
Ich habe ein gutes tutorial auf http://www.sitepoint.com/loading-twitter-data-into-android-with-lists/ um dies zu tun,
Sorry Ramamoorthy versuchen Sie bitte, zu sein mehr spezifisch, wenn Sie Fragen auf stackoverflow. Einfach code posten und in der Hoffnung für eine Lösung wird nicht funktionieren.
ich möchte eine listview in einem Thread, ist es möglich, dies zu tun?
Nur ein freundliches Wort der Beratung....bitte nicht posten, Hunderte von Zeilen code in eine Frage. Reduzieren Sie Ihre Beispiel-code, um gerade genug code, um zu demonstrieren, Ihr Problem. So bekommen Sie bessere Antworten. Bitte Lesen Sie von diesem Artikel: msmvps.com/blogs/jon_skeet/archive/2010/08/29/...
ich möchte eine listview in einem Thread, ist es möglich, dies zu tun?
Nur ein freundliches Wort der Beratung....bitte nicht posten, Hunderte von Zeilen code in eine Frage. Reduzieren Sie Ihre Beispiel-code, um gerade genug code, um zu demonstrieren, Ihr Problem. So bekommen Sie bessere Antworten. Bitte Lesen Sie von diesem Artikel: msmvps.com/blogs/jon_skeet/archive/2010/08/29/...
InformationsquelleAutor Ramamoorthy | 2011-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisieren UI, sollten Sie rufen einen UI-thread in Ihrem thread wie folgenden
InformationsquelleAutor Sandy
In einer situation wie dieser, ich bevorzuge AsyncTask, wie es bricht alles für Sie und hält die Dinge schön und organisiert. Beispiel:
Versuchte ich, um das Beispiel kurz und auf den Punkt, aber wenn Sie brauchen mehr Informationen, was zu tun ist, einfach einen Kommentar und ich werde versuchen, das zu klären.
Dan
setListAdapter sollte noch genannt werden, in Ihrer onCreate, wo Sie es hatte. onPostExecute würde eine Schleife durch die JSONArray und fügen Sie die Ergebnisse mit dem adapter. Ich werde aktualisieren Sie den code oben, um diese zu reflektieren.
ich habe aktualisiert, der code, ich konnte nicht die Liste erstellen, hier, schau dir diesen code und lassen Sie mich wissen, die Fehler habe ich hier gemacht.
In Ihrem Fall ist, können Sie auf den aktuellen Kontext innerhalb der AsyncTask durch die Verwendung der aktuellen Instanz der Aktivität. Beispiel: ListViewActivity.diese
InformationsquelleAutor Dan
Jetzt alle Arbeit im thread außer UI-Aufgabe, und speichern Sie alle Werte, um eine entsprechende variable.
Nun tun-UI-tasks wie das hinzufügen von Daten in der Liste in der handler-Klasse
InformationsquelleAutor Tofeeq
Können Sie eine
Handler
zum senden der arraylist an der Haupt-thread.Dann ist u tut es irgendwo falsch.
Hallo alle zusammen vielen Dank für Eure große Hilfe, es hilft mir sehr, und ich fand gutes tutorial auf sitepoint.com/loading-twitter-data-into-android-with-lists
vielen Dank für diesen link!
InformationsquelleAutor Ronnie