我的布局包括1 ListView
以显示项目列表,并在
ListView
加载更多项目。单击此按钮时,我将其可见性设置为View.GONE
和
显示进度视图。但实际上,“加载更多”按钮仍会显示,直到新项目为
已添加到ListView
。看起来很不舒服!
我试图调用adapter.onNotifyDataSetChanged
但没有效果。还有其他方法可以解决这个问题吗?
由于
我的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:orientation="vertical"
android:padding="4dip" >
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"
android:indeterminate="true" />
<ListView
android:id="@+id/videoList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/load_more"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
我的代码:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.load_more:
if (startIndex <= mActivity.mVideoCount[selected_pos]) {
new loadMoreVideosTask().execute();
}
break;
default:
break;
}
}
private class loadMoreVideosTask extends AsyncTask<Void, Void, Void> {
onPreExecute{
// Hide load more button
// Show loading Progress
}
protected Void doInBackground(Void... params) {
// Loading data
}
onPosExecute {
// Update ListView
}
}
答案 0 :(得分:1)
我认为
ListView.invalidateViews()
可能会为你做的伎俩。它强制重绘所有子视图,包括包含按钮的视图。 (在通话结束后将其设置为GONE
。)
据我了解,adapter.onNotifyDataSetChanged
只适用于更改ListView
下的数据。
编辑:请注意,这仅适用于您的按钮是ListView的子节点,它可能不是。
答案 1 :(得分:0)
也许,你设置了#34; loadMore&#34;按钮对View.GONE的可见性使用listview更新其数据,请检查它。
答案 2 :(得分:0)
我尝试了很多方法但没有改变。所以我只是简单地将Alpha of Load更多按钮设置为0.但它不是完美的方式,因为我仍然可以看到按钮占据的空白区域。