2

達成しようとしています

  • より良いUIxを提供するためにlayout_height="wrap_parent"&を持つGridViewの後にボタンを追加します。layout_width="fill_parent"

制約:

  • Facebook-Graph-ApiからフェッチしたImageViewを、ImageViewで構成されるGridViewに追加します。

  • 画像がフェッチされたら、GridViewのボタンを最後に追加します。

試してみました

  • 1。AysncTaskのonPostExecute()でボタンの可視性をVisibleに設定すると、画像を取得するのに役立ちます

  • 2。ScrollListenerでボタンの可視性をVisibleに設定します。これは、スクロールが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 に答える