我有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();
}
});
现在它完美无缺!
答案 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。