私はAndroid ListViewを持っています。これには、クリックするとチェックする必要があるボタンが1つあります。私は、「チェックボックス」をクリックすると、あなたはおそらく、私は緑の初期の背景を変更しています見ることができるように、これはちょうどテストである(背景が赤にする必要があるAndroidリストで表示再描画しない
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = this._context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.checkbox_cell, null);
holder = new ViewHolder();
holder.checkbox = (CheckBox) convertView.findViewById(R.id.button);
holder.textView = (TextView) convertView.findViewById(R.id.textView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(holder.checkbox.isChecked()) {
convertView.setBackgroundColor(Color.RED);
holder.textView.setBackgroundColor(Color.RED);
convertView.invalidate();
} else {
convertView.setBackgroundColor(Color.GREEN);
}
holder.checkbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Arrays.sort(_context.checkBoxIds);
int index = Arrays.binarySearch(_context.checkBoxIds, position);
if (((CheckBox) v).isChecked()) {
holder.textView.setPaintFlags(holder.textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
holder.textView.setPaintFlags(holder.textView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
}
holder.textView.setBackgroundColor(Color.RED);
notifyDataSetChanged();
}
});
return convertView;
}
:クリックイベントが動作しているようですUIが更新されるかどうかを確認してください)。私はonClick
のビューを更新しようとしましたが、それも動作していません。 onClick
の後にnotifyDataSetChanged()
と呼んで、私がリフレッシュするときにUIが変化するかどうかを確認します。 holder.checkbox.isChecked()
は真実だと思われますが、背景を赤に設定するとUIは更新されません。誰がここで間違っているか知っていますか?私は現時点では無責任です。
あなたのコード内の@Override注釈がありますし、あなたは自分のonClickListenerのために投稿することを忘れていますか? – Opiatefuchs
ああ、それを忘れてしまった。上書きがあります:) –
@LeonBoon:[notifyDataSetChanged()](http://stackoverflow.com/a/12229903/1920735)、それは自分自身をredawときに、それが新鮮なホルダーを参照すると、ビューを再描画するリストビューを要求されます.checkbox.isChecked()。これはデフォルトでは間違い(推測)なので、赤色の背景色は表示されません。 – avinash