在将其设置为View.GONE的可见性后,按钮仍会在布局中显示一段时间

时间:2014-12-19 04:28:23

标签: android listview button adapter

我的布局包括1 ListView以显示项目列表,并在

下方包含1个“加载更多”按钮

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
               }

   }

3 个答案:

答案 0 :(得分:1)

我认为

ListView.invalidateViews()

可能会为你做的伎俩。它强制重绘所有子视图,包括包含按钮的视图。 (在通话结束后将其设置为GONE。)

据我了解,adapter.onNotifyDataSetChanged只适用于更改ListView下的数据。

编辑:请注意,这仅适用于您的按钮是ListView的子节点,它可能不是。

答案 1 :(得分:0)

也许,你设置了#34; loadMore&#34;按钮对View.GONE的可见性使用listview更新其数据,请检查它。

答案 2 :(得分:0)

我尝试了很多方法但没有改变。所以我只是简单地将Alpha of Load更多按钮设置为0.但它不是完美的方式,因为我仍然可以看到按钮占据的空白区域。