2

Android のウィジェットライブラリを更新するためのプッシュを求める要望が多数ありましたが、それはあまり良い UI パターンではないと考える人もいます(私はこの陣営に属していると言わざるを得ません)。

しかし、「プルして更新」、またはより正確に言うと、Android 4 の gmail で使用されるメカニズムはどうでしょうか。リストの一番下に到達すると、最後の要素が取得されます。しかし、もう一度上にスクロール (プッシュ) すると、新しいリスト項目が表示され、無限の進行状況バーが表示され、次のメールが読み込まれてリストがいっぱいになります。

他の android コーダーと UI デザイナーはそれに気付きましたが、このパターンについての良い議論を見つけることができず、リストを埋めるためのこの機能の実装も見つけることができません。

この問題に対する興味深い解決策を見た人はいますか?

4

2 に答える 2

3

2 つの便利なライブラリを次に示します。

于 2012-10-15T15:00:46.313 に答える
1

自分で実装してみることができます。とても簡単です:

私がした方法:

1) リストビューの onScrollStateChange を設定します。

@Override
public void onScrollStateChanged(AbsListView listView, int scrollState) {
    if (scrollState == SCROLL_STATE_IDLE) {
        if (listView.getLastVisiblePosition() >= listView.getCount()-1) {
                //scroll reached the end, trigger the method to load more itens!                
        }
    }
}

2)ベースアダプターで:

private static final int TYPE_VIEW_COUNT = 2;
private static final int TYPE_VIEW_CONTENT = 0;
private static final int TYPE_VIEW_LOADING = 1; 

@Override
public int getItemViewType(int position) {

    if (position == (getCount()-1)) {
        return TYPE_VIEW_LOADING;
    } else {
        return TYPE_VIEW_CONTENT;
    }           

}

@Override
public int getViewTypeCount() {
    return TYPE_VIEW_COUNT;
}



@Override
public int getCount() {
    //return list size + 1;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = null;

    switch (getItemViewType(position)) {

    case TYPE_VIEW_CONTENT:

        //load your content view (using convertView and then...)

        break;
    case TYPE_VIEW_LOADING:
        //load your loading view (indeterminate progressbar)
        break;
    }



    return view;        

}
于 2014-08-18T12:05:15.440 に答える