我使用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文件中的背景颜色,但它只适用于tap侦听器。所以这个选项也被淘汰了。除此之外,其他一切工作都非常完美。
向正确的方向推进会很好。如果需要进一步分析任何代码我可以编辑问题。
答案 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);
}
}
}