我有一个活动,但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