0

我有一项活动,但有 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 包含所有项目,因此适配器有问题。

4

1 回答 1

1

我建议您采用以下方法:

  1. Activity类初始化ListViewAdapter空列表。
  2. 创建子类BaseAdapter以获得对其的更多控制。
  3. 通过. Adapter_Adapter
  4. 通过AdapterList在您的AsyncTask子类中。
  5. 在您的doInBackground()方法中执行从服务器获取数据并将每个项目添加到List.
  6. 如果要创建Lazy-Adapter以便将每个项目添加到List, 调用 publishProgress()onProgressUpdate()方法调用 中yourAdapter.notifyDataSetChanged()
  7. 如果没有,工作完成后,在onPostExecute()方法调用 yourAdapter.notifyDataSetChanged()中。
  8. 现在它应该可以工作了。

你完成了。

于 2013-02-18T18:50:45.763 回答