【发布时间】:2018-10-22 18:30:45
【问题描述】:
我有一个ListView 的CheckedTextView 项目,每个项目都使用一个单选按钮。这是一个单选列表,表示我的主要活动中正在播放的音频流。
一旦其中一个项目被选中,它应该保持选中状态,直到选中另一个项目,或者直到用户“停止”来自通知或 UI 的流,并且每次应用程序退出时都需要重置选中状态.
此刻我正在这样做:
final BookmarkAdapter adapter = new BookmarkAdapter(this, db.getAllBookmarks());
final ListView listView = findViewById(R.id.bookmark_list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View v = listView.getChildAt(position);
CheckedTextView ctv = v.findViewById(R.id.bookmark_list_item);
ctv.toggle();
// ... go on to launch a service and another activity
}
});
在我的其他活动打开之前,当您选择列表项时,您可以看到该项目正在被选中。但是,当我返回主要活动时,不再检查任何项目。
在应用程序关闭或我手动取消选中之前,保持项目的选中状态的正确方法是什么?
ListView xml:
<ListView
android:id="@+id/bookmark_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
CheckedTextView xml:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bookmark_list_item"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:gravity="center_vertical"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:text="@string/list_item_title"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
【问题讨论】:
标签: java android listview android-activity android-checkedtextview