我想从facebook加载图像并填充listview,我能够得到朋友列表和他们的信息,但我想设置图像我得到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); } });
您需要使listView成为一个字段变量,就像fbUserArrayList一样.现在,当ListView有子节点时,将运行setFbUsersImage().
总而言之,如果您尝试以任何方式修改行,那么适配器是执行此操作的最佳位置.