默认情况下,我需要将一个项目显示为在水平列表视图中突出显示,并且当用户在水平列表视图中选择另一个项目时,我要针对该项目尝试突出显示该项目(删除较早的项目并突出显示当前选中的项目)。以下代码,在我的适配器中

适配器:-

 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/

10-11 00:07