Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重新实例化适配器后,listview(滑动listview)行中的选择器仍处于按下状态_Android_Android Listview_Android Selector - Fatal编程技术网

Android 重新实例化适配器后,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

我有一个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_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选择器,试着让它成为“单一的”
也许我们会发现一些可能无法解决问题的问题,但是检查所有的孩子,并将他们的按下状态设置为false
setPressed(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);
...