1

我正在尝试使用 TextViews 制作一个 ListView,我希望每个 textview 都能够被单击,并根据它的位置拉出一个 Fragment。但是, itemOnClickListener 似乎甚至没有被调用。

        mDrawerList = (ListView) findViewById(R.id.devices_drawer);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, drawerInfo));
    mDrawerList.setItemsCanFocus(false);
    mDrawerList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                final int pos, long id) {
            Log.d(TAG, "CLICKED " + pos);
            selectDevice(pos);
        }
    });

这是列表项的 xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/deviceText"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

列表视图 xml 文件:

<android.support.v4.widget.DrawerLayout     xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
    android:id="@+id/devices_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    android:background="#111"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp" />

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</android.support.v4.widget.DrawerLayout>
4

4 回答 4

5

这是你的整个 xml 抽屉(我想你尝试做一个导航抽屉)?如果您有父布局,请检查,android:descendantFocusability="blocksDescendants"否则您必须将您的 textview 包装在布局中(如果您没有该项目的复杂 UI,LinearLayout 就足够了)。是new OnItemClickListener一个AdapterView.OnItemClickListerner

(一个很好的方法http://www.vogella.com/articles/AndroidActionBar/article.html#actionbar_navigation_drawer

于 2013-08-13T17:11:04.510 回答
0

你使用有什么原因mDrawerList.setItemsCanFocus(false);吗?您的项目布局中没有任何可聚焦的项目,因此删除该调用是安全的。之后应该可以正常工作。

于 2013-08-13T18:17:15.293 回答
0

对于列表中的列表项..您必须设置以下属性

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

于 2015-01-29T06:34:39.143 回答
0

还要检查您是否在列表行项中使用 Button,它会覆盖您的列表项单击事件

于 2014-10-30T07:05:59.723 回答