6

我想从 facebook 加载图像并填充到列表视图中,我能够获取朋友列表及其信息,但我想设置图像我得到 getChildCount() 0,请帮助,

   public static ArrayList<FBUser> fbUserArrayList;
    public static Drawable sharedDrawable;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.friends_list_view);
        this.setTitle("FB Friend List");

        final ListView listView = (ListView) findViewById(R.id.listview);
        FriendListAdapter couponsListAdapter = new FriendListAdapter(this,
                fbUserArrayList);
        listView.setAdapter(couponsListAdapter);

        couponsListAdapter.notifyDataSetChanged();


        setFbUsersImage(listView,fbUserArrayList);

    }

    private void setFbUsersImage(final ListView listView,final ArrayList<FBUser> fbUserArrayList) {
                // here am getting 0 ???
        for (int i = 0; i < listView.getChildCount(); i++) {
 ////           
   }

    }
4

1 回答 1

21

ListView 尚未绘制,因此它没有任何子项。不幸的是,当视图被绘制时没有回调,例如onResume(),但是您可以使用 Runnable 来做您想做的事情。


另外
让我们做一些改变onCreate()

listView.setAdapter(couponsListAdapter);
// Remove your calls to notifyDataSetChanged and setFbUsersImage

// Add this Runnable
listView.post(new Runnable() {
    @Override
    public void run() {
        setFbUsersImage(listView,fbUserArrayList);
    }
});

您需要制作listView一个字段变量,就像fbUserArrayList. 现在setFbUsersImage()将在 ListView 有子项时运行。

综上所述,如果您尝试以任何方式修改行,适配器是执行此操作的最佳位置。

于 2012-11-30T18:48:59.080 回答