我想从 facebook 加载图像并填充到 ListView 中,我能够获取 friend 列表和他们的信息,但我想设置图像我正在获取 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++) {
////
}
}
最佳答案
ListView 尚未绘制,因此它没有任何子项。不幸的是,没有回调,如 onResume()
,用于绘制 View 时,但您可以使用 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);
}
});
您需要像fbUserArrayList
一样使listView
成为一个字段变量。现在 setFbUsersImage()
将在 ListView 有子项时运行。
总而言之,如果您尝试以任何方式修改行,适配器是执行此操作的最佳场所。
关于android - 我正在获取 listView.getChildCount(),设置 arrayadapter 后是否为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651226/