android - 在水平 ListView 中突出显示所选项目

标签 android horizontallist selectlistitem

默认情况下,我需要在水平 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/

相关文章:

asp.net-mvc - 在 asp.net-mvc 站点上,为什么 html DropdownlistFor() 不能正常工作?

android - 火力地堡安卓 : How to cancel download?

android - 如何从套接字连接读取数据 - android

Android - ListView 行内的水平 ListView

sencha-touch-2 - 在水平列表中显示多个项目

java - 使用带有错误焦点的复选框,仍然会阻止 ListView 点击

java - Android 应用程序在重新打开和替换 fragment 时崩溃

asp.net-mvc - ASP.NET MVC DropDownListFor 不支持 SelectListItem.Selected

asp.net-mvc-4 - 选择列表操作将 2 个集合合并到一个列表中