2016-08-19 51 views
0

我有一個ListView,我想從SQLite中獲取我保存的選擇並將它們顯示爲突出顯示的選項,以便用戶更新其選擇。無法突出顯示基於Android中的ArrayAdapter和ViewHolder的默認ListView項目

到目前爲止,我得到了一個List我的價值觀,我得到的ListView其相應位置使用:

int ItemPos = mAdapter.getPosition(Alist.get(i).toString()); 
mAdapter.toggleSelection(ItemPos); 

和我的適配器如下:

public View getView(int position, View view, ViewGroup parent) { 

    if (view == null) 
    { 
     holder = new ViewHolder(); 
     view = inflater.inflate(R.layout.list_item, null); 
     holder.itemName = (TextView) view.findViewById(R.id.txtAnswer); 
     view.setTag(holder); 
    } else 
    { 
     holder = (ViewHolder) view.getTag(); 
    } 
    holder.itemName.setText(list.get(position)); 

    return view; 
} 


public void toggleSelection(int position){ 
    selectView(position, !mSelectedItemsIds.get(position)); 
} 

public void selectView(int position, boolean value) { 
    if (value) { 
     mSelectedItemsIds.put(position, value); 
     holder.itemName.setBackgroundColor(Color.parseColor("#FJFJFJ")); 
    } 
    else{ 
     mSelectedItemsIds.delete(position); 
    } 

    notifyDataSetChanged(); 
} 

當我運行此我得到那

Attempt to read from field 'android.widget.TextView.AnswerListAdapter$ViewHolder.itemName' on a null object reference 

如何更改我的項目的顏色?

謝謝

+0

的你好嗎能夠訪問selectView中的holder.itemName。它認爲這讓你錯誤 – Ramit

+0

我如何訪問項目來改變它的顏色?如果沒有視圖持有者? –

+0

即將添加答案 – Ramit

回答

0

在布爾適配器通數據陣列,並設置其活性值到位下面兩行

int ItemPos = mAdapter.getPosition(Alist.get(i).toString()); 
mAdapter.toggleSelection(ItemPos); 

修改getView如下

public View getView(int position, View view, ViewGroup parent) { 

    if (view == null) 
    { 
     holder = new ViewHolder(); 
     view = inflater.inflate(R.layout.list_item, null); 
     holder.itemName = (TextView) view.findViewById(R.id.txtAnswer); 
     view.setTag(holder); 
    } else 
    { 
     holder = (ViewHolder) view.getTag(); 
    } 

if(data.get(position)) 
holder.itemName.setBackgroundColor(Color.parseColor("#FJFJFJ")); 
else 
holder.itemName.setBackgroundColor(Color.parseColor("set normal color other wise you will face problem on scrolling")); 

    holder.itemName.setText(list.get(position)); 

    return view; 
} 
相關問題