簡體   English   中英

getView ListView所選項目的顏色更改

[英]getView ListView selected item color change

我想在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    
     }
}

您應該按照以下所有條件更新背景色;

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

嘗試此操作,並在代碼中進行這些更改,希望能解決。

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

         if (isItemSelected.equals("true")){

    listviewTitles.setBackgroundColor(0xAAAAFFFF);
           }
          else if (isItemSelected.equals("false")){
             // Default color    
          } 
        }

請嘗試這個

我相信我有解決您的要求的方法,

將此代碼粘貼到您的視圖文件中

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));
    }

如果您對此有任何疑問,請隨時告訴我,我們隨時樂意為您提供幫助。

我認為您應該嘗試在數組列表中添加數據時嘗試添加布爾值等額外值。 選擇為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
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM