android – 我得到listView.getChildCount(),设置arrayadapter后为0?

我想从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().

总而言之,如果您尝试以任何方式修改行,那么适配器是执行此操作的最佳位置.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...