android - 合并 PullToRefresh 和 SwipeListView 库时出现了一些错误

标签 android listview swipe pull-to-refresh

我有一个实现 PullToRefresh 的列表(旧的)和SwipeListView图书馆。

我正在关注 this结合这些图书馆和thisActivity 中使用它。

我的列表可以执行一些基本功能,例如上拉/下拉和向左/向右滑动,但我遇到了一些错误:

  1. 我的 ListView 中的项目位置总是从 1 开始,我认为它应该从 0 开始,所以我需要在我的方法中减少它。
  2. 当我滑动一个项目(比如第一个项目)时,第 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/

相关文章:

java - cocos2d-x/firebase/admob加载插页式广告失败

android - 实现 47degree android-swipelistview 滑动 android ListViewItem

java - ListView onScrollListener 不起作用

java - 使用适用于 Android 应用程序的自定义适配器将项目动态添加到 ListView

android - Recyclerview 和处理不同类型的行膨胀

android - ListView 每一行的滑动检测

flutter - 如何检测 flutter 中的滑动

android - 多个 Activity 通用的选项菜单项

android - 使用Qt for Android无法使手机播放声音或振动

android - 单击时禁用 GridView 项目