Intereting Posts
Android Studio Gradle androidTest vs instrumentTest ORMLite с CursorAdapter в Android Внедрение библиотеки для отслеживания всех событий в приложении Запуск песни из Spotify Intent Сохранение состояния активности Android с использованием состояния Save Instance Андроидный указатель входа без использования webview Android Бесконечное управление памятью списков Я пишу файл в Environment.DIRECTORY_DOWNLOADS, почему я не вижу его через приложение «Загрузки»? Атрибут пространства имен Tools для отображения макета в ViewPager во время разработки Активность камеры Android не возвращается в мое приложение при нажатии кнопки OK Являются ли Фрагменты и Фрагменты активными быстрее, чем Действия? Может ли выставляемая форма иметь размер, соответствующий fill_parent? Android: Принудительный внешний микрофон (входной разъем 3,5 мм), чтобы оставаться на Как использовать Nexus 7 для разработки с mac os ShowDialog устарел. Какая альтернатива?

Щелчок по списку не работает с флажками Android

РЕДАКТИРОВАТЬ (РЕШИТЬ) Для ответа перейдите к нижней части вопроса.

У меня есть listview, и я надуваю несколько строк в нем с помощью настраиваемого адаптера. Надутый ряд содержит флажок. Я могу поддерживать статус флажка, но проблема в том, что мои элементы списка не более доступны для кликов. Вот мой код:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); fl=(ListView)findViewById(R.id.MainMenu);//Mainmenu is listview fl.setAdapter(new CustomAdapter(Annotate.this,R.layout.preann2,_dir));//preann2 is row and _dir is the list of objects //fl.setOnItemClickListener(this); tried this too } public void onItemClick(AdapterView<?> a, View view, int pos, long id) { //Implementations } public class CustomAdapter extends ArrayAdapter<String> { public CustomAdapter(Context context, int textViewResourceId,String[] objects) { super(context, textViewResourceId,objects); } @Override public View getView(final int position, View convertView, ViewGroup parent) { LayoutInflater inflater=getLayoutInflater(); View row=inflater.inflate(R.layout.preann2, parent, false); try { TextView Name=(TextView)row.findViewById(R.id.title); Name.setText("xyz"); ImageView icon=(ImageView)row.findViewById(R.id.icon); row.setFocusable(true); row.setClickable(true); row.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub checkState[position]=!checkState[position]; } }); CheckBox c=(CheckBox)row.findViewById(R.id.checkBox); c.setChecked(checkState[position]); c.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton v, boolean isChecked) { // TODO Auto-generated method stub CheckBox checkBox=(CheckBox)v; if (isChecked) { checkState[position]=true; } else checkState[position]=false; } }); /* tried this too c.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { CheckBox checkBox=(CheckBox)v; if (checkBox.isChecked()) { //checkBox.setChecked(false); checkState[position]=true; } else checkState[position]=false; }});*/ icon.setImageResource(R.drawable.ic_launcher); }catch(Throwable err) { err.printStackTrace(); } return row; } } 

Я хочу, чтобы listitems можно было щелкнуть, если пользователь хочет щелкнуть только один элемент.

EDIT (по просьбе Akhil) – preann2.xml в папке макетов:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_marginRight="4dip"/> <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_weight="1" android:ellipsize="end" android:gravity="center_vertical" android:singleLine="true" android:textStyle="bold" /> <CheckBox android:id="@+id/checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Main.xml в папке макетов:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/MainMenu" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout> 

EDIT (SOLVED) Просто добавьте эти свойства к флажку:

  android:focusable="false" android:focusableInTouchMode="false" 

Solutions Collecting From Web of "Щелчок по списку не работает с флажками Android"

Решение, упомянутое в вопросе, решает проблему:

 android:focusable="false" android:focusableInTouchMode="false" 

AbsListView проверяет View#hasFocusable и не позволяет View#hasFocusable на элемент, если это так. Таким образом, отключите фокус на всех нормально настраиваемых элементах.

Используйте эту строку в корневом элементе списка
андроид: descendantFocusability = "blocksDescendants"

Я неправильно понял вашу проблему. Пожалуйста, посмотрите здесь, на ваш вопрос. Надеюсь, он решит вашу проблему.