Каждая строка моего списка в android имеет флажок и текстовое представление. Если я нажму на флажок, я установил свой флажок, но как установить флажок, если я нажму на TextView. Вот мой пример кода. Благодарим вас за ваше время.CheckBox и TextView в ArrayAdapter в Android
public class PitanjaAdapter extends ArrayAdapter<Odgovor>{
private ArrayList<Odgovor> odgovorList;
Context context;
private Typeface custom_font;
public PitanjaAdapter(Context context, int textViewResourceId, ArrayList<Odgovor> odgovorList) {
super(context, textViewResourceId, odgovorList);
this.context = context;
this.odgovorList = new ArrayList<Odgovor>();
this.odgovorList.addAll(odgovorList);
this.custom_font = Typeface.createFromAsset(context.getAssets(), "fonts/Aller.ttf");
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null){
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.pitanja_entry, null);
holder = new ViewHolder();
holder.code = (TextView) convertView.findViewById(R.id.code);
holder.code.setTypeface(custom_font);
holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
convertView.setTag(holder);
holder.name.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
Odgovor country = (Odgovor) cb.getTag();
country.setSelected(cb.isChecked());
}
});
holder.code.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
else {
holder = (ViewHolder) convertView.getTag();
}
Odgovor country = odgovorList.get(position);
holder.code.setText(country.getContents());
holder.name.setChecked(country.isSelected());
holder.name.setTag(country);
if (odgovorList.get(position).getGreen() != 0 && odgovorList.get(position).getRed() != 0){
if (country.isSelected() && Integer.parseInt(country.getIs_correct()) == 1){
holder.code.setBackgroundResource(R.drawable.tocan_odgovor_drawable);
holder.name.setBackgroundResource(R.drawable.ikona_box2_tocno);
} else if (country.isSelected() && Integer.parseInt(country.getIs_correct()) == 0){
holder.code.setBackgroundResource(R.drawable.netocan_odgovor_drawable);
holder.name.setBackgroundResource(R.drawable.ikona_box2_netocno);
} else if (!country.isSelected() && Integer.parseInt(country.getIs_correct()) == 0){
holder.code.setBackgroundResource(R.drawable.netocan_odgovor_drawable);
holder.name.setBackgroundResource(R.drawable.selector_check);
holder.name.setEnabled(false);
} else if (!country.isSelected() && Integer.parseInt(country.getIs_correct()) == 1){
holder.code.setBackgroundResource(R.drawable.tocan_odgovor_drawable);
holder.name.setBackgroundResource(R.drawable.selector_check);
holder.name.setEnabled(false);
}
}
return convertView;
}
public void colorized(Odgovor odgovor){
odgovor.setRed(Color.RED);
odgovor.setGreen(Color.WHITE);
}
private class ViewHolder{
public TextView code;
public CheckBox name;
}
}
I судимым для реализации Methond setOnClickListener, и проверьте, флажок установлен, установите checbox на false, но тогда мне нужно изменить модификатор ViewHolder на final, и если я изменю модификатор ViewHolder, я не смогу его выполнить. –
Большое спасибо, но почему мой набор приложений всегда проверял последний флажок. Я реализовать на этом пути 'holder.code.setOnClickListener (новый View.OnClickListener() { \t \t \t \t \t \t @Override \t \t \t общественного недействительными OnClick (View v) { \t \t \t \t \t \t \t \t if (v.isSelected()) { \t \t \t \t \t владелец.name.se tChecked (истина); \t \t \t \t} еще { \t \t \t \t \t holder.name.setChecked (ложь); \t \t \t \t} \t \t \t \t \t \t \t} \t \t}); ' –
могли бы вы объяснить это по-другому ?, я не понимаю вопрос, в чем проблема? –