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のようにフィールド変数を作成する必要がありますfbUserArrayListsetFbUsersImage()これで、ListViewに子があるときに実行されます 。

とはいえ、何らかの方法で行を変更しようとしている場合は、アダプターがこれを行うのに最適な場所です。

于 2012-11-30T18:48:59.080 に答える