这个问题并不新鲜。但是,任何解决方案都不适用于我。
我有一个带有几个TextView的ListView,它是从SQLite提取的数据中填充的。用户可以在一个项目上使用LongPress来选择多个ListView项目,并进一步选择从数据库中删除它们。
接下来我要做的是突出显示用户在第一个LongPress(包括第一个)之后选择的项目。
这是我的ListView的片段。
<ListView
...
android:drawSelectorOnTop="false"
android:listSelector="@android:color/darker_gray"
android:choiceMode="multipleChoice"/>
这是突出显示ListView的项目,但不是用户将在其上执行LongPress的第一项。并且只突出显示ListView上的一个项目,每当用户选择另一个项目时,重置当前项目并更改新项目的背景,这将继续。
修改
这是我的setMultiChoiceModeListener
的JAVA实现list.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
final int checkedCount = list.getCheckedItemCount();
mode.setTitle(checkedCount + " Selected");
listViewAdapter.toggleSelection(position);
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.hold_activity_actions, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
SparseBooleanArray selected = listViewAdapter.getSelectedItemIds();
switch (item.getItemId()) {
case R.id.delete:
for (int i = (selected.size() - 1); i >= 0; i--) {
if (selected.valueAt(i)) {
bloodPressureRecords selectedItem = listViewAdapter.getItem(selected.keyAt(i));
// Remove selected items following the ids
listViewAdapter.remove(selectedItem);
db.deleteRecord(selectedItem);
}
}
mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
listViewAdapter.removeSelection();
}
});
答案 0 :(得分:0)
尝试在longClick上设置textview的背景颜色。 例如:
textView.setBackgroundColor(Color.DKGRAY);
答案 1 :(得分:0)
好的问题在SO上建议的不同方式进行一些实验时已经解决了 这就是我为了得到我想要的而做的事情
将此添加到我的相对布局中,我在其中定义了ListView的布局 项目
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:drawable="@android:color/darker_gray"/>
</selector>
在可绘制文件夹
中创建了一个新资源文件'labelThreshold':0.5,
'labelType':'percent',
'donut':True,
'donutRatio':0.35
这就是我所做的一切,以获得所需的结果。