アクティビティは1つですが、レイアウトは3つです。ListViewは、ログイン後に表示されるレイアウトの一部です。そのため、ListViewがまだ初期化されていないため、ArrayAdapterをonCreateに設定できません。このチュートリアルに従ってみましたが、これらの手順を再現できませんでした。このチュートリアルでは、作成者はすべて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にすべてのアイテムがあることをデバッガーでチェックしたので、アダプターに問題があります。