2

努力实现

  • 在具有layout_height="wrap_parent"&layout_width="fill_parent"以提供更好的 UIx 的 GridView 之后添加按钮。

约束:

  • 将从 Facebook-Graph-Api 获取的 ImageView 添加到由 ImageView 组成的 GridView。

  • 获取图像后,添加 GridView 的 Button atlast。

试过了

  • 1 . 在 AysncTask 的 onPostExecute() 将按钮的可见性设置为可见,这有助于我获取图像

  • 2 . 在 ScrollListener 将按钮的可见性设置为可见,如果它滚动到达 GridView 的末尾,即 GridView 中的最后一个图像,它将运行

  • 但是 GridView 的末尾没有显示 Button。不知道为什么??

我的 XML 布局::

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" 
android:id="@+id/rootview"
>
<Button
    android:id="@+id/fbconnect"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/connectfb" 
    android:layout_centerHorizontal="true"
    android:visibility="visible"
    />
<GridView 
    android:id="@+id/gridphoto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:columnWidth="80dp"
    android:numColumns="auto_fit" 
    android:verticalSpacing="2dp"
    android:horizontalSpacing="2dp"
    android:stretchMode="columnWidth"
    />
<Button 
        android:id="@+id/loadmore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"        
        android:layout_centerHorizontal="true"
        android:layout_below="@id/gridphoto"
        android:visibility="gone"
        android:text="@string/load_more"
    />
</RelativeLayout>

代码 :: 通过 AysncTask 获取图像并在 onPostExecute 设置可见性以在 GridView 末尾添加 LoadMore 按钮。

 protected void onPostExecute(Void result) {
  loadMore.setVisibility(View.VISIBLE); // Load More Button
 }

代码 :: 在 GridView 上实现 ScrollListener --> 检查它是否到达底部,然后更改加载更多按钮的可见性。

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
 if (gridView.getLastVisiblePosition() + 1 == increasingItem) // Checking if it reaches bottom of GridView or not. It prefectly runs. Checked via Logging into StackTrace.
  {
     loadMore.setVisibility(View.VISIBLE); // Load More Button
  }
}
4

1 回答 1

4

我用这段代码完成了它:

主要活动 :

 public class MainActivity extends Activity implements OnScrollListener {




        ArrayAdapter<String> adapter;

        GridView gridphoto;
        Button loadMore;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            gridphoto = (GridView) findViewById(R.id.gridphoto);
            loadMore = (Button) findViewById(R.id.loadmore);
            gridphoto.setOnScrollListener(this);
            adapter= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
            for (int i = 0; i < 80; i++) {
                adapter.add("dummy data " + i);

            }
            gridphoto.setAdapter(adapter);

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            if (gridphoto.getLastVisiblePosition() + 1 == 80) {
                loadMore.setVisibility(View.VISIBLE); // Load More Button
            }
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub

        }
    }

和activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <GridView
            android:id="@+id/gridphoto"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:columnWidth="80dp"
            android:gravity="center"
            android:horizontalSpacing="2dp"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="2dp" />

        <Button
            android:id="@+id/loadmore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Load More"
            android:visibility="gone" />
    </LinearLayout>

</RelativeLayout>

它按预期工作,希望它会有所帮助

于 2013-03-03T00:10:56.140 回答