我有一個ListView
與CustomAdapter
,我可以改變點擊線的顏色。 但我需要改變顏色時,用戶要求的答案(這是一個測驗應用程序),我試圖設置一個公共的方法來調用它從我的MainActivity
,但我得到了一個錯誤。如何在ListView android中更改特定的行/行顏色?
MyCustomAdapter代碼:
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder=new Holder();
View rowView;
rowView = inflater.inflate(R.layout.row_item, null);
lista = parent;
holder.tv=(io.github.kexanie.library.MathView) rowView.findViewById(R.id.texto);
holder.row=(RelativeLayout) rowView.findViewById(R.id.row);
holder.img=(ImageView) rowView.findViewById(R.id.imagem);
holder.tv.setText(result[position]);
holder.img.setImageResource(imageId[position]);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
holder.tv.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
holder.tv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
holder.tv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
holder.tv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Paint the clicked line, and remove color from the unclicked lines.
for (int j = 0; j < 5; j++) {
parent.getChildAt(j).setBackgroundResource(R.color.branco);
if (j != position) {
status[j] = false;
}
}
if(!status[position]) {
holder.row.setBackgroundResource(R.color.azul);
status[position] = true;
respostas = ((MyApplication) simulado.getApplication()).getRespostas();
mudarAlternativa(position);
}else{
holder.row.setBackgroundResource(R.color.branco);
status[position] = false;
mudarAlternativa(5);
}
}
});
return rowView;
}
畫一條線,我用parent.getChildAt(position).setBackgroundResource(R.color.mycolor);
和它的作品,但我想用一個方法把它漆成:
public void paintAnswer(int answerPosition){
parent.getChildAt(j).setBackgroundResource(R.color.green);
}
,但我不能使用parent
,所以我初始化了ViewGroup lista;
並在getView
上設置lista
。 lista = parent
。所以我嘗試:在適配器
公共方法:
public void paintAnswer(int answerPosition){
lista.getChildAt(j).setBackgroundResource(R.color.green);
}
從我的MainActivity調用:
adapter.paintAnswer(2);
和我得到一個埃羅。 「由於:java.lang.NullPointerException:嘗試調用虛擬方法'android.view.View android.view.ViewGroup.getChildAt(int)'在空對象引用上」。
我如何參考parent
getView
以外使用公共方法繪製線條?
謝謝。我對這方面很瞭解,你能告訴我一個小例子嗎?一個鏈接,類似的問題等? –
我對你所說的有所瞭解,而且我將ListView更改爲五個LinearLayout,並且它更容易操作。 –
@GLAPPsMobile,如果你有一個固定數量的視圖,使用預定義的視圖集合而不是'ListView'是有意義的。 –