默认情况下,我需要在水平 ListView 中突出显示一个项目,当用户在水平 ListView 中选择另一个项目时,我想突出显示该项目(删除较早的并突出显示当前选择的)我是在我的适配器中尝试使用以下代码
适配器:-
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"));
}
}
并在从 ListView 的 Activity 中选择另一个项目后,在 Activity 中做什么以更改项目的突出显示位置。
Activity :-
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
的背景或 ListView 上的 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/