加载listview内容时禁用加载微调器

时间:2014-04-14 12:07:53

标签: android facebook listview

我有listview的代码:

@Override
        public void onComplete(List<Profile> friends) {

            // populate list
            List<String> values = new ArrayList<String>();
            for (Profile profile : friends) {
                //profile.getInstalled();
                values.add(profile.getName());          
            }

            ArrayAdapter<String> friendsListAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.list_items2, values);
            friendsListAdapter.sort(new Comparator<String>() {
                @Override
                public int compare(String lhs, String rhs) {
                    return lhs.compareTo(rhs);    
                }
            });

这个带动画的自定义微调器:

<ImageView
    android:id="@+id/imageSpinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/custom_spinner2" />

listview加载来自facebook的内容,当内容完成加载时我希望微调器消失,但我现在拥有的是即使加载内容时微调器也在那里。这是我尝试添加到onComplete方法:

runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mSpinner.setVisibility(View.GONE);
                }
                });

但是使用这段代码时,在加载内容时,微调器仍然存在,任何想法代码有什么问题?

我通过添加clearAnimation()来解决它;就在setVisibility(View.GONE)之后; 像这样:

runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mSpinner.setVisibility(View.GONE);
                    mSpinner.clearAnimation();
                }
                });

现在它完美无缺!

2 个答案:

答案 0 :(得分:0)

也许可以从[{1}}的{​​{1}}实例中搜索onLayout这样的事件,您可以为ListView获取这些事件。

尝试使用类似的东西(调整它以适合你的构图)。

yourListView.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            mSpinner.setVisibility(View.GONE);

            yourListView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });

答案 1 :(得分:0)

我猜这是因为你的动画总是在运行。只需在runOnUiThread上隐藏动画即可。或者使用默认的ProgressBar。