У меня есть список вопросов в этом списке, есть 4 вопроса, 3 ложных и 1 истины. Я создал Bean для управления этими вопросами, у компонента есть значение атрибута, этот атрибут получает 1 или 0, 1 до true и 0 - false.Картина ListView с правильным ответом?
Когда пользователь нажимает на вопрос в ListView, я хочу проверить, имеет ли вопрос значение = 1 или значение = 0, если значение = 0 Я хочу нарисовать все значение = 0 с красным цветом и если значение = 1 краска с цветом зеленый, показывая, что вопрос верен!
Как я могу это сделать?
Здесь, как я пытаюсь.
//bean
public class Bean{
private int value;
//get and sets
}
//activity
List<Bean> answers = new ArrayList<Bean>();
ListView listView = (ListView)findViewById(R.id.answers_listview);
listView.setAdapter(new BeanListAdapter(context, answers));
//ListAdapter
public class BeanListAdapter extends BaseAdapter {
private List<Bean> lista;
private Context context;
public BeanListAdapter(Context context, List<Bean> lista){
this.context = context;
this.lista = lista;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
Bean item = lista.get(position);
View layout;
if(view == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = inflater.inflate(R.layout.alternativa_list_adapter, parent, false);
}else{
layout = view;
}
LinearLayout llAlternativa = (LinearLayout) layout.findViewById(R.id.llAlternativa);
TextView tvAlternativa = (TextView) layout.findViewById(R.id.tvAlternativa);
if(item.getValue() >= 1){
llAlternativa.setBackgroundColor(Color.parseColor("#529c03"));
tvAlternativa.setTextColor(Color.parseColor("#FFFFFF"));
}else{
llAlternativa.setBackgroundColor(Color.parseColor("#d74b3f"));
tvAlternativa.setTextColor(Color.parseColor("#FFFFFF"));
}
tvAlternativa.setText(item.getTexto());
return layout;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bean answer = listAnswers.get(position);
LinearLayout llAlternativa = (LinearLayout) getView().findViewById(R.id.llAlternativa);
TextView tvAlternativa = (TextView) getView().findViewById(R.id.tvAlternativa);
if(answer.getValor() == 1){
//green
llAlternativa.setBackgroundColor(Color.parseColor("#529c03"));
tvAlternativa.setTextColor(Color.parseColor("#FFFFFF"));
}else{
//red
for(Bean x : listAnswers){
if(x.getValor() == 0){
llAlternativa.setBackgroundColor(Color.parseColor("#d74b3f"));
tvAlternativa.setTextColor(Color.parseColor("#FFFFFF"));
}
}
}
}
ли нужно сделать пользователь клики? Где этот метод onClick? Потому что из вашего метода getView, я думаю, цвет фона уже установлен без какого-либо взаимодействия с пользователем. Или мне что-то не хватает? – Wicked161089
yep, пользователю нужен щелчок. Когда пользователь нажимает: 'public void onItemClick (AdapterView > parent, View view, int position, long id)' фон изменяется красным или зеленым в зависимости от значения 1 или 0 – FernandoPaiva
Тогда я не понимаю, что вы подразумеваете под этим : «но когда я нажимаю в опции, ListView не рисует строки с цветами». – Wicked161089