我有一个实现 PullToRefresh 的列表(旧的)和SwipeListView图书馆。
我正在关注 this结合这些图书馆和this在 Activity
中使用它。
我的列表可以执行一些基本功能,例如上拉/下拉和向左/向右滑动,但我遇到了一些错误:
- 我的 ListView 中的项目位置总是从 1 开始,我认为它应该从 0 开始,所以我需要在我的方法中减少它。
- 当我滑动一个项目(比如第一个项目)时,第 5 个项目将被滑动到。所以index+4项也会被刷掉。
我用来初始化对象的代码:
private PullToRefreshSwipeListView ptrListView;
private SwipeListView resultListView;
resultListView = ptrListView.getRefreshableView();
ptrListView.setOnRefreshListener(new OnRefreshListener2<SwipeListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<SwipeListView> refreshView) {
// TODO Auto-generated method stub
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<SwipeListView> refreshView) {
// TODO Auto-generated method stub
}
});
这是我用来初始化 ListView 的方法:
private void setListview() {
adapter = new LibraryAdapter(this, R.layout.item_library_list, new ArrayList<PurchasedItem>(), resultListView);
adapter.setListener(new LibraryListListener() {
//set the adapter
});
resultListView.setSwipeListViewListener(new BaseSwipeListViewListener() {
//position di -1 karena sejak gabung library swipelistview + pulltorefresh, position slalu kelebihan 1 & menyebabkan OutOfBound error.
@Override
public void onClickFrontView(final int position) {
//do something here
}
@Override
public void onOpened(int position, boolean toRight) {
// TODO Auto-generated method stub
super.onOpened(position-1, toRight);
lastPos = position-1;
}
@Override
public void onMove(int position, float x) {
// TODO Auto-generated method stub
super.onMove(position-1, x);
}
@Override
public int onChangeSwipeMode(int position) {
// TODO Auto-generated method stub
return SwipeListView.SWIPE_MODE_DEFAULT;
}
@Override
public void onStartOpen(int position, int action, boolean right) {
// TODO Auto-generated method stub
super.onStartOpen(position-1, action, right);
}
});
resultListView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View arg1,
final int pos, long arg3) {
//do something here
}
});
ptrListView.setAdapter(adapter);
ptrListView.setLongClickable(true);
resultListView.setSwipeOpenOnLongPress(false);
}
这是我的 xml:
<com.handmark.pulltorefresh.library.PullToRefreshSwipeListView
xmlns:swipe="http://schemas.android.com/apk/res-auto"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:divider="@drawable/line_separator_repeat"
android:listSelector="#00000000"
ptr:ptrMode="pullFromEnd"
swipe:swipeActionLeft="reveal"
swipe:swipeBackView="@+id/back"
swipe:swipeCloseAllItemsWhenMoveList="true"
swipe:swipeFrontView="@+id/front"
swipe:swipeMode="both" />
请帮助我,我们将不胜感激。谢谢
最佳答案
我遇到了和你一样的第一个问题。我认为第一项(索引 0)是标题。
int _index = index - listView.getHeaderViewsCount();
我从来没有遇到过你的第二个问题。你可以试试这个来解决感人的问题:
listView.setOnScrollListener(listView.getRefreshableView().getTouchListener().makeScrollListener());
希望对你有帮助
关于android - 合并 PullToRefresh 和 SwipeListView 库时出现了一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776511/