2013-09-10 3 views
0

Я хочу реализовать «Сдвинуть вниз», чтобы «Обновить» и «Подтянуть вверх», чтобы обновить с помощью «Расширяемый список». Я использую расширенный просмотр списка. Ниже приведен код Java, содержащий расширенный просмотр списка.Как реализовать Потяните вниз, чтобы обновить и вытащить, чтобы обновить в раскрывающемся списке View

public class LoadMoreListView extends ExpandableListView implements OnScrollListener { 

private static final String TAG = "LoadMoreListView"; 

/** 
* Listener that will receive notifications every time the list scrolls. 
*/ 
private OnScrollListener mOnScrollListener; 
private LayoutInflater mInflater; 

// footer view 
private RelativeLayout mFooterView; 
// private TextView mLabLoadMore; 
private ProgressBar mProgressBarLoadMore; 

// Listener to process load more items when user reaches the end of the list 
private OnLoadMoreListener mOnLoadMoreListener; 
// To know if the list is loading more items 
private boolean mIsLoadingMore = false; 
private int mCurrentScrollState; 

public LoadMoreListView(Context context) { 
    super(context); 
    init(context); 
} 

public LoadMoreListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(context); 
} 

public LoadMoreListView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    init(context); 
} 

private void init(Context context) { 

    mInflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    // footer 
    mFooterView = (RelativeLayout) mInflater.inflate(
      R.layout.load_more_footer, this, false); 
    /* 
    * mLabLoadMore = (TextView) mFooterView 
    * .findViewById(R.id.load_more_lab_view); 
    */ 
    mProgressBarLoadMore = (ProgressBar) mFooterView 
      .findViewById(R.id.load_more_progressBar); 

    addFooterView(mFooterView); 

    super.setOnScrollListener(this); 
} 

@Override 
public void setAdapter(ListAdapter adapter) { 
    super.setAdapter(adapter); 
} 

/** 
* Set the listener that will receive notifications every time the list 
* scrolls. 
* 
* @param l 
*   The scroll listener. 
*/ 
@Override 
public void setOnScrollListener(AbsListView.OnScrollListener l) { 
    mOnScrollListener = l; 
} 

/** 
* Register a callback to be invoked when this list reaches the end (last 
* item be visible) 
* 
* @param onLoadMoreListener 
*   The callback to run. 
*/ 

public void setOnLoadMoreListener(OnLoadMoreListener onLoadMoreListener) { 
    mOnLoadMoreListener = onLoadMoreListener; 
} 

public void onScroll(AbsListView view, int firstVisibleItem, 
     int visibleItemCount, int totalItemCount) { 

    if (mOnScrollListener != null) { 
     mOnScrollListener.onScroll(view, firstVisibleItem, 
       visibleItemCount, totalItemCount); 
    } 

    if (mOnLoadMoreListener != null) { 

     if (visibleItemCount == totalItemCount) { 
      mProgressBarLoadMore.setVisibility(View.GONE); 
      // mLabLoadMore.setVisibility(View.GONE); 
      return; 
     } 

     boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount; 

     if (!mIsLoadingMore && loadMore 
       && mCurrentScrollState != SCROLL_STATE_IDLE) { 
      mProgressBarLoadMore.setVisibility(View.VISIBLE); 
      // mLabLoadMore.setVisibility(View.VISIBLE); 
      mIsLoadingMore = true; 
      onLoadMore(); 
     } 

    } 

} 

public void onScrollStateChanged(AbsListView view, int scrollState) { 
    mCurrentScrollState = scrollState; 

    if (mOnScrollListener != null) { 
     mOnScrollListener.onScrollStateChanged(view, scrollState); 
    } 

} 

public void onLoadMore() { 
    Log.d(TAG, "onLoadMore"); 
    if (mOnLoadMoreListener != null) { 
     mOnLoadMoreListener.onLoadMore(); 
    } 
} 

/** 
* Notify the loading more operation has finished 
*/ 
public void onLoadMoreComplete() { 
    mIsLoadingMore = false; 
    mProgressBarLoadMore.setVisibility(View.GONE); 
} 

/** 
* Interface definition for a callback to be invoked when list reaches the 
* last item (the user load more items in the list) 
*/ 
public interface OnLoadMoreListener { 
    /** 
    * Called when the list reaches the last item (the last item is visible 
    * to the user) 
    */ 
    public void onLoadMore(); 
} 

}

Ниже Xml файл макета, который я буду использовать:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="15dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:orientation="vertical" > 

     <ExpandableListView 
      android:id="@+id/listViewMeeting" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:cacheColorHint="@color/White" 
      android:listSelector="@color/transprent" 
      android:groupIndicator="@color/transprent" > 

     </ExpandableListView> 

    </LinearLayout> 

</LinearLayout> 

ответ

0

Эта библиотека поддерживает ExpandableListView с PullToRefresh.

Заменить <ExpandableListView> с <com.handmark.pulltorefresh.library. PullToRefreshExpandableListView>.

+0

Существует нет возможности скачать библиотеку в вашей ссылке. – ghjghjgh

+0

Вы можете скачать библиотеку из 'Скачать ZIP' –

+0

Он будет работать только в том случае, если мы обновим список снизу. Он не работает, если мы хотим обновить список сверху. – ghjghjgh

-1

для людей, которые все еще хотят это:

https://github.com/chrisbanes/Android-PullToRefresh

перейти в файл XML и удалить строку «pullFromBottom», чтобы вытащить из верхней нормально (по крайней мере, я думаю, что это «pullFromBottom», но вы 'll знаю это тогда)

Смежные вопросы