2方向列表视图使用SwipeListView滑动

时间:2014-09-09 07:20:04

标签: android-listview

我正在使用THIS教程中的SwipeListView。

在本教程中,他们通过向右滑动打开一种自定义行,并通过向左滑动关闭该行。

我想使用它有点不同。

我想通过向左滑动打开1种行,向右滑动打开其他类型。

我首先尝试使用下面的代码来执行此操作,代码使用一个自定义行,如果用户向右滑动,则隐藏左侧和vise verse(这是来自主要行为):

public void onStartOpen(int position, int action, boolean right) {
        Log.d("swipe", String.format("onStartOpen %d - action %d", position, action));
        View v = swipelistview.getChildAt(position);
        if (v == null) return;
        if (right) {
            v.findViewById(R.id.example_itemparameters).setVisibility(View.VISIBLE);
            v.findViewById(R.id.swipe_button1).setVisibility(View.INVISIBLE);
            v.findViewById(R.id.swipe_button2).setVisibility(View.INVISIBLE);
          } else {        
            v.findViewById(R.id.example_itemparameters).setVisibility(View.INVISIBLE);
            v.findViewById(R.id.swipe_button1).setVisibility(View.VISIBLE);
            v.findViewById(R.id.swipe_button2).setVisibility(View.VISIBLE);
          }

    }

此代码的问题在于" getview"适配器只调用显示的项目,所以如果我将列表向下滚动到第一个未显示的项目," swipelistview.getChildAt(position);"是null()。

我尝试按照如何将所有项目加载到列表视图中,对我来说没有任何作用。

希望有人遇到这个问题,可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法!!!!

感谢这位男士 - Question

这就是我的方法“onStartOpen”的样子:

@Override
public void onStartOpen(int position, int action, boolean right) {
    View v = swipelistview.getChildAt(position - swipelistview.getFirstVisiblePosition()); 

    if (v == null) return;
    if (right) {
        v.findViewById(R.id.example_itemparameters).setVisibility(View.VISIBLE);
        v.findViewById(R.id.swipe_button1).setVisibility(View.INVISIBLE);
        v.findViewById(R.id.swipe_button2).setVisibility(View.INVISIBLE);
      } else {        
        v.findViewById(R.id.example_itemparameters).setVisibility(View.INVISIBLE);
        v.findViewById(R.id.swipe_button1).setVisibility(View.VISIBLE);
        v.findViewById(R.id.swipe_button2).setVisibility(View.VISIBLE);
      }

}

问题是适配器的“GetView”方法只加载显示的项目,所以我的问题是在“swipelistview”更新后找到“真实”位置(通常通过向上和向下滚动列表视图)。

然后真正的位置是 - position - swipelistview.getFirstVisiblePosition()

最后,你可以用内部对象做你想做的事。

在我的情况下,如果我向左滑动,我会显示2个按钮,如果我向右滑动,我会显示textview。

希望这个答案对其他人有帮助,因为找到这个 EASY 解决方案花了我太长时间。