默认情况下,我需要将一个项目显示为在水平列表视图中突出显示,并且当用户在水平列表视图中选择另一个项目时,我要针对该项目尝试突出显示该项目(删除较早的项目并突出显示当前选中的项目)。以下代码,在我的适配器中
适配器:-
int selectedIndex;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
v = LayoutInflater.from(parent.getContext()).inflate(
R.layout.hlist_rowitem, null);
if (position == selectedIndex) {
v.setBackgroundColor(Color.parseColor("#abcdef"));
}
}
然后从列表视图的活动中选择另一个项目后,在活动中要执行什么操作以更改该项目的突出显示位置。
活动:-
int sIndex;
sIndex = getIntent().getIntExtra("POSITION", 0);
hlAdapter = new HSelectedAdapter(InsuranceCard.this, rowItems, sIndex);
hListView.setAdapter(hlAdapter);
hListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
//other code goes here
}
});
最佳答案
我会使用color state list resource并让ListView用setSelection(position)处理选择。
颜色列表如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#aabbcc"/> <!-- pressed -->
<item android:state_activated="true"
android:color="#fedcba"/> <!-- selected -->
<item android:color="#abcdef"/> <!-- default -->
</selector>
并且应将其设置为
R.layout.hlist_rowitem
的背景或在列表视图上设置为listSelector
。编辑:
要在收到点击事件时更改选择:
hListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
hListView.setSelection(position);
}
});
ListView将取消选择旧/默认项目,并在指定位置选择新项目。
编辑2:默认情况下,ListView没有设置选择模式,因此请确保将其设置为xml或代码:
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
关于android - 在水平 ListView 中突出显示选定的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24630538/