getView ListView选择项目颜色更改

时间:2016-12-29 06:30:11

标签: java android listview getview

我希望在getView()中设置所选项目,但是我的列表中的每个项目都已选中。我用吐司测试过,显示的是正确的,所以条件正常。条件检查以查看特定项目的DB条目是否设置为true(因此被选中)。

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    if(isItemSelected.equals("true")){
          listviewTitles.setBackgroundColor(0xAAAAFFFF);
     }
     else if (isItemSelected.equals("false")){
     // Default color    
     }
}

4 个答案:

答案 0 :(得分:1)

您应该按照以下条件更新背景颜色;

 listviewTitles.setBackgroundColor(isItemSelected.equals("true") ? selectedColor : unSelectedColor);

答案 1 :(得分:0)

试试这个并在代码中进行这些更改,希望它能够解决。

Declare @DOB varchar(20)
Set @DOB ='1989-12-15 10:00:01' SELECT CAST(DATEDIFF(YEAR,@DOB,GETDATE()) AS VARCHAR(10)) + 'Years' 
+ CAST(DATEDIFF(MONTH,@DOB,GETDATE())-(DATEDIFF(YEAR,@DOB,GETDATE())*12) AS VARCHAR(10)) + 'Months' 
+ CAST(DATEDIFF(dd,@DOB,GETDATE())-(DATEDIFF(year,@DOB,GETDATE())*1461/4) AS VARCHAR(10)) +'Days'

请试试这个

答案 2 :(得分:0)

我相信我有一个满足您要求的解决方案,

将此代码粘贴到您的视图文件中

SparseBooleanArray singleChecked;

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        if (position != singleListSelectedPosition) {
            singleListSelectedPosition = position;
            int totalCount = lvSingleSelect.getCount();
            for (int i = 0; i < totalCount; i++) {
                if (i == position) {
                    boolean stat = singleChecked.get(position, false);
                    singleChecked.put(position, !stat);
                } else {
                    singleChecked.put(i, true);
                }
            }
             adapter.setChecked(singleChecked);
        }
    }

这是你的适配器类代码:

public void setChecked(SparseBooleanArray ch) {
        singleChecked = ch;
        notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (singleChecked.get(position, false)) {
        convertView.setBackgroundColor(getResources()
                    .getColor(R.color.titlebar_background_color));
    } else {
        convertView.setBackgroundColor(
                    getResources().getColor(R.color.emphasis_color));
    }

如果您有任何问题,请告诉我,随时乐意为您提供帮助。

答案 3 :(得分:0)

我认为你应该尝试在arraylist中添加数据时添加类似boolean的额外值。 true表示选中,false表示未选中。最初为所有人添加false。然后当你点击listviewTitles

int positionClicked;

listviewTitles.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           for (int i = 0; i < bean_List.size(); i++) {
           if (i == position) {
                positionClicked = position;
                bean_List.get(position).setIsClicked(true);
                notifyDataSetChanged();
                //Do your task here...
           } else {
                bean_List.get(i).setIsClicked(false);
                notifyDataSetChanged();
           }
     }
});

在getView()中使用: -

    if (bean_List.get(position).getIsClicked() == true) {
        listviewTitles.setBackgroundColor(0xAAAAFFFF);
        //change color accordingly
    } else {
        listviewTitles.setBackgroundColor(0xAAAAFFFF);
        //change color accordingly
    }