У меня есть ListView и компоновка Роу имеет ребенка с фоном набор на следующий селектор:Selector, в ListView (коромысло-ListView) строка, остается в состоянии нажимается после повторного 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)
- Я нажимаю на первую строку (также для другой строки), и только при нажатии селектор остается в нажатом состоянии, показывая серый цвет, ду!
- Я выбираю из меню какой-то элемент и триггеры: создаю новый экземпляр адаптера с моделью списка В и применяю его к списку.
- И теперь проблема: первая строка имеет селектор в нажатом состоянии
Подробнее: @Questions поднимаемые Абхишек V в комментарии: 1. Фон установлен грести макет макета, а не сама компоновка строк? Правильно! Вот макет, селектор установлен в положение относительного с идентификатором «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? Список на самом деле скопирован из библиотеки 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) {
}//...
Спасибо!
Если вы показываете «Адаптер» и «Выбор XML», возможно, мы поймаем что-то. – hrskrs
Может не решить проблему, но пройдите по всем дочерним элементам и установите их состояние прессования на false 'setPressed (false)'. Если он перерабатывает представления в списке, один из них, возможно, не получил эквивалент «mouseUp», прежде чем потерял фокус. –
вы можете дать нам дополнительную информацию - 1) Фон настроен на «малый» макета строки, а не на макет строки? 2) Нажмите/коснитесь прослушивателя, чтобы установить раскладку или его дочерние элементы. 3) Какой слушатель вы используете, это 'onClick',' onTouch' или 'onItemClick'? –