2012-03-15 6 views
1

У меня есть listview, состоящий из 20 элементов, с использованием android.R.layout.simple_list_item_multiple_choice в качестве макета textview, который использует CheckedTextView. Я хочу, чтобы этот флажок, чтобы проверить при выборе достигается за счет:ListView enable checkedTextView anomaly

public void onListItemClick(ListView parent, final View v, int pos, long id) { 
    ((CheckedTextView) v).setChecked(true); 
} 

Однако, когда я это сделать, это не только то, что особенно checkedtextview, который получает чек, а несколько других, которые также проверяются.

ответ

0

Попробуйте this-

((CheckedTextView)parent.getChildAt(pos)).setChecked(true); 
+0

Пробовал это раньше, но как-то это показывает странное поведение. Несмотря на то, что во всем списке есть 20 элементов, getChildCount() возвращает 9. Поэтому, когда я нажимаю на 10-й или какой-либо другой элемент, есть исключение с нулевым указателем – Arjun

0

вы можете достичь этого путем создания пользовательского адаптера. Все, что вам нужно сделать, это: создать новый класс, расширяющий класс BaseAdapter.

Для этого, чтобы работать с макетом, который вы используете вы должны изменить GetView method.below является фрагментом

общественного мнения GetView (интермедиат положение, Вид convertView, ViewGroup родитель) { держателя ViewHolder ;

if (convertView == null) 
{ 
    convertView = mInflater.inflate(android.R.layout.simple_list_item_multiple_choice, null); 

    holder = new ViewHolder(); 
    holder.checkbox = (CheckedTextView) convertView.findViewById(android.R.id.text1); 

    convertView.setTag(holder); 
} 
else 
{ 
    holder = (ViewHolder) convertView.getTag(); 
} 

    holder.checkbox.setText(tasks.get(position).getName()); 
    holder.checkbox.setChecked(tasks.get(position).isCompleted()); 

    return convertView; 

} 

static class ViewHolder { 
    CheckedTextView checkbox; 

} 

Надеюсь, это поможет вам.

+0

Спасибо, я довольно много начинаю, поэтому мне нужно идти через пользовательские адаптеры. Надеюсь, это сработает. Тем не менее, любая причина, по которой отмечены несколько флажков, когда кликнул только один из них. – Arjun

+0

Это отлично работает, но getView вызывается только тогда, когда представление необходимо создать снова (когда эта строка прокручивается, а затем снова). Я хочу, когда я нажимаю элемент списка, он проверяется там и потом. – Arjun

Смежные вопросы