Это сценарий: в ListView я хотел бы, чтобы выбранный элемент оставался выбранным, пока пользователь не нажмет кнопку DialogFragment. Проблема в том, что если пользователь нажимает кнопку "Назад" без какого-либо щелчка в DialogView, элемент в ListView остается выбранным.
Я прочитал это сообщение, и решения работают достаточно хорошо: я нажимаю на элемент, появляется диалоговое окно, я нажимаю кнопку «Назад», и селектор исчезает.
Но если я прокручиваю список, селектор возвращается! Где я не прав?
Вот код:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listView"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="15dp"
android:divider="@android:color/transparent"
android:visibility="visible"
android:dividerHeight="5dp"
android:choiceMode="singleChoice"
android:drawSelectorOnTop="true"
android:listSelector="@color/primario_1_alfa"/>
и DialogFragment, где я пытаюсь отменить выбор элемента списка
public class MyDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Test dialog view")
.setPositiveButton("action 1", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton("action 2", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.create();
}
@Override
public void onDestroy(){
super.onDestroy();
ListView listView = (ListView) getActivity().findViewById(R.id.listView);
listView.clearChoices();
listView.requestLayout();
}
}
view.setSelected(false);
для каждой строки было бы достаточно, но это не работает. Как и ваше решение, я изменил метод getView адаптера, как вы предложили, и добавил кодselectedPosition = position;
в метод onItemClick слушателя. Зачем мне нужна позиция, если я хочу весь раунд без селектора? Спасибо :) 29.07.2015