在刷卡时不会改变android列表视图背景

时间:2013-09-01 17:51:32

标签: android listview android-listview swipe android-background

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

除了一件事,一切都很完美。

我只想更改刷卡列表项的背景颜色。一旦它恢复,它就会恢复原状。

enter image description here

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

以下听众为我工作 -

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文件中的背景颜色,但它只适用于tap侦听器。所以这个选项也被淘汰了。除此之外,其他一切工作都非常完美。

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

2 个答案:

答案 0 :(得分:0)

您已经定义了v,因此您可以更好地使用它,并且更容易。

View v = swipeListView.getChildAt(position);
v.setBackgroundColor(Color.CYAN);

答案 1 :(得分: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);
        }
    }
}