1

我已经使用https://github.com/47deg/android-swipelistview设置了滑动列表视图。它确实提供了各种事件侦听器来处理与滑动相关的事件。

除了一件事,一切都完美无缺。

我只想更改滑动列表项的背景颜色。一旦它回来,它就会恢复。

在此处输入图像描述

我可以通过适配器的点击事件来做到这一点。我可以使用列表适配器来执行此操作,但由于我只想在向左滑动(侦听器)时更改背景,所以我不能使用适配器。因此,从适配器执行此操作可能不起作用。

以下听众为我工作 -

swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() {
    @Override
    public void onOpened(int position, boolean toRight) {       
         View v = swipeListView.getChildAt(position);
         swipeListView.getChildAt(position).setBackgroundColor(Color.CYAN);

         ci = u_items.get(position); // getter of list item data

         Toast.makeText(getApplicationContext(), ci.getTitle().toString(), Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onClosed(int position, boolean fromRight) {
    }

    @Override
    public void onListChanged() {
    }

    . // other listeners
    .
    .
    .
    .
    .

这不会引发任何错误或警告,但我看不到背景被更改。Toast确实出现了,所以向左滑动监听器实际上正在工作。

也许,我在设置背景本身时做错了。不确定是什么。因为,swipelistview是扩展ListView的自定义视图,所以我无法想象如何仅从该侦听器执行此操作。

甚至,我可以使用 android 列表选择在 XML 文件中设置背景颜色,但它仅适用于点击侦听器。所以这个选项也被淘汰了。除此之外,其他一切都非常完美。

朝着正确的方向推进会很好。如果需要进一步分析任何代码,我可以编辑问题。

4

2 回答 2

1

你已经定义了 v 所以你可以更好地为你使用它,并且更容易。

View v = swipeListView.getChildAt(position);
v.setBackgroundColor(Color.CYAN);
于 2013-09-01T18:03:45.583 回答
0

我能够通过获取背景视图并以这种方式进行更改来做到这一点。我使用了 onStartOpen 方法而不是 onOpen 方法。

@Override
public void onStartOpen(int position, int action, boolean right) {
    View v = mSwipeListView.getChildAt(position);
        if (v == null) return;

        if (right) { // nothing

        } else {
            final ImageView mCurrImage = (ImageView) v.findViewById(R.id.myImageView);
            mCurrShareImage.setBackground(Color.CYAN);
        }
    }
}
于 2014-02-06T23:47:50.630 回答