我有一個活動,但3個佈局。 ListView是登錄後顯示的佈局的一部分。這就是爲什麼我無法設置ArrayAdapter onCreate,因爲我的ListView尚未初始化。我嘗試了以下this教程,但我無法重現這些步驟。在本教程中,作者做了一切創建。Android從JSON數組中添加ListView項目
我試圖做這樣說:
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有所有項目,所以適配器有問題。
您不像通過顯式的Contstructor那樣實例化活動。你也應該注意你寫的東西,'onCreate()'需要一個Bundle作爲參數。使用'@ Override'註解,它會使得更容易。另外,請使用適當的命名規則,並告訴我們每個類是如何設置的。如果AsyncTask和ListActivity都是同一個文件的一部分,不要將它們分開。 – 2013-02-18 18:44:15
這裏是完整的代碼:http://pastebin.com/dA6dcZRv – Disa 2013-02-18 18:55:08