我的ListView存在问题:(自定义的)项目只能在分隔符上单击。我已经花了几个小时寻找解决方案,但没有任何方法可以帮助我。
机器人:descendantFocusability =" blocksDescendants"选择正常工作。在每个子项上设置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 :(得分: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>
。
所以我删除了这个属性,一切正常。
答案 1 :(得分:0)
将android:clickable="true"
添加到LinearLayout
的{{1}}。您的ItemLayout.xml
还在哪里?