2014-11-02 5 views
2

У меня проблема с моим ListView: (настраиваемые) элементы можно кликать только на разделителе. Я нашел несколько часов для решения, но ничего не работало для меня.Android ListView Элемент не доступен для просмотра

android: descendantFocusability = "blocksDescendants" dosen't работает правильно. Настройка focusable = "false" для каждого дочернего элемента также не работает. кто-нибудь знает решение этой проблемы?

ItemLayout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:paddingTop="@dimen/padding" 
     android:paddingBottom="@dimen/padding" 
     android:paddingLeft="@dimen/padding" 
     android:paddingRight="@dimen/padding" 
     android:layout_width="match_parent" 
     android:descendantFocusability="blocksDescendants" 
     android:layout_height="wrap_content" > 

    <TextView 
      android:layout_width="match_parent" 
      android:focusable="false" 
      android:focusableInTouchMode="false" 
      android:layout_height="wrap_content" 
      style="@style/elremFontMedium" 
      android:id="@+id/detailNoticeText" /> 

</LinearLayout> 

Это исто мой ListView

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/detailNoticeListView"/> 

В адаптере я использовал CursorAdapter

public class NoticeAdapter extends CursorAdapter { 

    public NoticeAdapter(Context context, Cursor cursor) { 
     super(context, cursor, 0); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     View retView = inflater.inflate(R.layout.contact_detail_notice_item, parent, false); 

     return retView; 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     TextView textViewNotice = (TextView) view.findViewById(R.id.detailNoticeText); 
     textViewNotice.setText(cursor.getString(cursor.getColumnIndex(DatabaseHelper.NOTICE_TABLE_COLUMN_TEXT))); 
    } 
} 

onItemClick находится в моем Fragmant

@Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

     switch(adapterView.getId()) { 
      case R.id.detailNoticeListView: 
       Cursor cursor = mNoticeAdapter.getCursor(); 
       cursor.moveToPosition(i); 

       TextView textView = (TextView) view.findViewById(R.id.detailNoticeText); 

       Bundle bundle = new Bundle(); 
       bundle.putString(NoticeDialog.EDIT_TEXT_ID, cursor.getString(cursor.getColumnIndex("_id"))); 
       bundle.putString(NoticeDialog.EDIT_TEXT, textView.getText().toString()); 

       NoticeDialog noticeDialog = new NoticeDialog(); 
       noticeDialog.setTargetFragment(this, 0); 
       noticeDialog.setArguments(bundle); 
       noticeDialog.show(getFragmentManager(),"noticeDialog"); 
       break; 
     } 
    } 
+0

напишите больше кода вашего класса, используя этот список. –

+0

Где вы устанавливаете onItemClickListener? – SemaphoreMetaphor

+0

Возможный дубликат элементов [ListView не доступен для кликов. почему?] (http://stackoverflow.com/questions/8955270/listview-items-are-not-clickable-why) – rds

ответ

1

Я решил проблему. Причина в том, что я изменяю стиль TextView таким образом.

<style name="elremFontMedium" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">20dp</item> 
    <item name="android:textIsSelectable">true</item> 
</style> 

Проблема была <item name="android:textIsSelectable">true</item>. Итак, я удалил этот атрибут, и все работает нормально.

0

Добавить android:clickable="true" в LinearLayout из ItemLayout.xml. Также где ваш onItemClickListener?

+0

Добавьте функцию clickable = true dosen't. Слушатель находится в моем фрагменте. Я добавил в свой вопрос. –

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