Android 重新实例化适配器后,listview(滑动listview)行中的选择器仍处于按下状态
我有一个listview,该行的布局有一个子项,背景设置为以下选择器:Android 重新实例化适配器后,listview(滑动listview)行中的选择器仍处于按下状态,android,android-listview,android-selector,Android,Android Listview,Android Selector,我有一个listview,该行的布局有一个子项,背景设置为以下选择器: <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="@color/pressed_pane
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/pressed_panel" />
<corners android:radius="@dimen/rounded_panel_corners" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="@dimen/rounded_panel_corners" />
</shape>
</item>
这个点击会通知这个监听器
BaseSwipeListViewListener swipeListener = new BaseSwipeListViewListener() {
@Override
public void onClickFrontView(int position) {
}//...
谢谢大家! 尝试使用
clearChoices
和notifyDataSetChanged
:
yourListView.clearChoices();
yourListView.getAdapter().notifyDataSetChanged();
这可能是一个错误。通过首先调用绘图表上的mutate()
,尝试以编程方式将背景指定给行
首先,从自定义选择器Drawable中获取一个Drawable
实例,然后对其调用mutate()
,最后将该Drawable指定为行的背景:
Drawable selector = getResources().getDrawable(R.drawable.your_selector)
selector.mutate();
//...
row.setBackground(selector);
你面临的问题已经在这里报道过了 根据@strgev在该线程中的说明,修复为- 通过将下面的行添加到onTouch方法,编辑类SwipeListViewTouchListener:
....
case MotionEvent.ACTION_UP: {
view.onTouchEvent(motionEvent);
...
你能试试吗?谢谢,但它不起作用,我实际上在列表上有choiceMode=“none”如果你显示
适配器和XML选择器,试着让它成为“单一的”
也许我们会发现一些可能无法解决问题的问题,但是检查所有的孩子,并将他们的按下状态设置为falsesetPressed(false)
。如果它在listview中循环使用视图,其中一个视图在失去焦点之前可能没有获得与mouseUp
相同的效果。您能给我们提供更多信息吗?1)背景设置为行布局的子视图,而不是行布局本身,对吗?2) 单击/触摸监听器设置为行布局或其子级?。3) 您正在使用哪个侦听器,是onClick
,onTouch
还是onItemClick
?@Chris我在适配器的getView()中的视图上尝试了setPressed(false),但不起作用。@Abhishek V我将更新infoGREAT!恭喜你的赏金!非常感谢D
Drawable selector = getResources().getDrawable(R.drawable.your_selector)
selector.mutate();
//...
row.setBackground(selector);
....
case MotionEvent.ACTION_UP: {
view.onTouchEvent(motionEvent);
...