Чтобы реализовать пейджинг в просмотре списка - PullRequest
0 голосов
/ 06 декабря 2011

На самом деле у меня есть представление списка, содержащее 30 элементов. Я хочу реализовать разбиение по страницам, т.е. иметь две кнопки, как next и previous, чтобы при нажатии на кнопку next отображалось около 5 элементов и т. Д.

Пожалуйста, предоставьте мне образец кода

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Одним из решений является реализация OnScrollListener и внесение изменений (например, добавление элементов и т. Д.) В ListAdapter в удобном состоянии в методе onScroll.

Добавление элементов при прокрутке пользователем до конца списка. Нажмите здесь

0 голосов
/ 10 октября 2012

я сделал что-то подобное. Вы также можете попробовать. Работает хорошо

public boolean onTouchEvent(MotionEvent ev) {
    final int action = ev.getAction();
    if ((action == MotionEvent.ACTION_MOVE) && (mTouchState != TOUCH_STATE_REST)) {
        //here i handled continous move
        scrolltwice = true;
        return true;
    }

    final float x = ev.getX();
    final float y = ev.getY();
    switch(action & MotionEvent.ACTION_MASK){

    case MotionEvent.ACTION_MOVE:

        final int xDiff = (int) Math.abs(x - mLastMotionX);
        yDiff = (int) (y - mLastMotionY);
        final int ydif = (int) Math.abs(y - mLastMotionY);

        final int touchSlop = mTouchSlop;
        boolean xMoved = xDiff > touchSlop;
        boolean yMoved = ydif > touchSlop;
        if (xMoved || yMoved) {
            if (yMoved) {                   
                mTouchState = TOUCH_STATE_SCROLLING;
            }
        }
        break;

    case MotionEvent.ACTION_DOWN:

        if (!mScroller.isFinished()) {
            mScroller.abortAnimation();
        }
        // Remember location of down touch
        mLastMotionX = x;
        mLastMotionY = y;           
        break;
    case MotionEvent.ACTION_CANCEL:
    case MotionEvent.ACTION_UP:

        final int myDiff = (int) (y - mLastMotionY);

        if(mTouchState == TOUCH_STATE_SCROLLING){
            scrolltwice = false;
            if(!scrolltwice){
            Log.d("DB", " ACTION_UP fetch new records ");
                FetchRecords rec = new FetchRecords();
                rec.execute();  
                if(yDiff < 0){ // fetching next slot of records
                    nextRecordId = nextRecordId + previousTotal;
                    if(nextRecordId > totalRowCount){
                        nextRecordId = nextRecordId - previousTotal;
                    }
                }else if(yDiff > 0){ // fetching previous slot of records
                    nextRecordId = nextRecordId - previousTotal;
                    if(nextRecordId < 1){
                        nextRecordId = 0;
                    }
                }
            }
        }
        scrolltwice = false;
        mTouchState = TOUCH_STATE_REST;
        break;
    }
    return false;

}

      //implement ontouch listener if the view is list pass it onTouchEvent
public boolean onTouch(View v, MotionEvent event) {
    if(v.equals(objListView))
        onTouchEvent(event);
    return false;
}
0 голосов
/ 06 декабря 2011

Вы также можете добавить элемент нижнего колонтитула (Загрузить еще ...).

Для этого вам необходимо:

View footer = getLayoutInflater().inflate(R.layout.item_load_more, null);
myList.addFooterView(footer);

Вы также можете загрузить больше элементов, когда просмотр списка заканчивается, например: http://benjii.me/2010/08/endless-scrolling-listview-in-android/

Надеюсь, это поможет ...

...