选择,在列表视图(刷卡-列表视图)行,停留在状态下按下重新instanciating适配器
我有一个列表视图,后一排的布局具有设置为以下选择背景孩子:选择,在列表视图(刷卡-列表视图)行,停留在状态下按下重新instanciating适配器
<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>
而现在这种情况发生了:
- 我实例化的适配器,并将其设置到ListView,与下面的列表中,我们假设模型中的(一ListFragment内)
- 我按下第一行(也发生在其他行上),只有在按下时,选择器保持按下状态,显示一些灰色,呃!
- 我从菜单中选择一些项目并触发:使用列表模型B创建适配器的新实例,并将其应用于列表视图。
- 而现在的问题:第一行有压入状态选择
更多信息: @Questions由阿布舍克V在评论提出: 1.背景被设定为行布局的孩子,而不是行布局本身的权利?对!这里是布局,选择设置为ID为“container_conversation”相对
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical">
<CheckBox
android:id="@+id/checkbox_select_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="18dp"
android:button="@drawable/checkbox_round_selector"
android:focusable="false"
android:clickable="true"
android:padding="8dp"/>
<FrameLayout
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="82dp"
android:layout_gravity="right"
android:layout_marginBottom="4dp"
android:layout_marginRight="9dp"
android:layout_marginTop="4dp">
<SomeViews>
</RelativeLayout>
<FrameLayout
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible"
tools:visibility="visible">
<RelativeLayout
android:id="@+id/container_conversation"
android:layout_width="match_parent"
android:layout_height="82dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
android:layout_marginTop="4dp"
android:background="@drawable/white_rounded_panel">
<SomeViews>
</RelativeLayout>
<View
android:id="@+id/unread_indicator"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:background="@drawable/orange_circle"
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</FrameLayout>
2)点击/触摸监听器被设置成排布置,或者它的孩子呢? 孩子 3)您使用的是哪一位听众,是onClick,onTouch还是onItemClick? listview实际上是从库android-swipelistview https://github.com/47deg/android-swipelistview复制的。 ,它的伤害被设置为点击如下:
frontView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
swipeListView.onClickFrontView(downPosition);
}
});
这个点击都会通知此侦听
BaseSwipeListViewListener swipeListener = new BaseSwipeListViewListener() {
@Override
public void onClickFrontView(int position) {
}//...
谢谢!
你面对已经在这里https://github.com/47deg/android-swipelistview/issues/41报告的问题。
按照由该线程@strgev的cooment的解决方法是 -
编辑类SwipeListViewTouchListener
通过将线下到onTouch方法:
....
case MotionEvent.ACTION_UP: {
view.onTouchEvent(motionEvent);
...
你可以试试吗?
GREAT !祝贺赏金!谢谢你!:D – Misca 2015-02-26 11:02:08
我很高兴它帮助:) – 2015-02-26 11:28:26
这可能是一个mutate problem。尝试通过首先在drawable上调用mutate()
来以编程方式将背景分配到行。
首先,从您的自定义选择抽拉获得Drawable
实例,然后调用它mutate()
最后分配绘制作为行的背景:
Drawable selector = getResources().getDrawable(R.drawable.your_selector)
selector.mutate();
//...
row.setBackground(selector);
谢谢bonnyz!没有工作... – Misca 2015-02-26 08:22:43
如果您显示'Adapter'和'XML Selector',也许我们会发现一些东西 – hrskrs 2015-02-25 15:00:03
可能无法解决问题,但是可以遍历所有的孩子并将他们的按下状态设置为false setPressed(false)'。如果它正在回收listview中的视图,其中一个在失去焦点之前可能没有相当于'mouseUp'。 – 2015-02-25 17:55:54
你可以给我们一些更多的信息 - 1)背景设置为行布局的“子”,而不是行布局本身的权利? 2)点击/触摸侦听器被设置为行布局或它的孩子? 3)你正在使用哪个听众,是onClick,onTouch还是onItemClick? – 2015-02-26 07:13:43