[英]Android Adding ListView items from JSON array
我有一個活動,但有3種布局。 ListView是登錄后顯示的布局的一部分。這就是為什么我無法將ArrayAdapter設置為onCreate的原因,因為ListView尚未初始化。 我嘗試按照本教程進行操作,但是無法重現這些步驟。 在本教程中,作者在onCreate上進行了所有操作。
我嘗試這樣做:
ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;
...
public class getcontacts extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
...HERE I AM FETCHING DATA...
listItems.add(json_data.getString("login") + " " + derp);
}
@Override
protected void onPostExecute(final Boolean success) {
getc = null;
ac = new addcontacts();
ac.execute(true);
這是addcontacts類的代碼:
public class addcontacts extends ListActivity {
protected void onCreate() {
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
protected void execute(final Boolean success) {
done = true;
}
}
以及布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="188dp"
android:layout_weight="0.53"
android:text="Fetching contact list" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="106dp" >
</ListView>
</LinearLayout>
ListView不包含任何內容。 我在調試器中檢查到listItems具有所有項目,因此適配器存在問題。
我建議您采用以下方法:
Activity
類中,使用空列表初始化ListView
和Adapter
。 BaseAdapter
子類以BaseAdapter
進行更多控制。 Adapter
通過的構造和列表Adapter
。 AsyncTask
子類中傳遞Adapter
和List
。 doInBackground()
方法中,執行從Server提取數據並將每個項目添加到List
。 List
,請調用publishProgress()
並在onProgressUpdate()
方法中調用yourAdapter.notifyDataSetChanged()
。 onPostExecute()
方法中調用yourAdapter.notifyDataSetChanged()
。 大功告成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.