Listview项目无法点击

时间:2016-01-04 09:23:32

标签: android android-listfragment

我使用' ListFragment'列出列表视图中的项目。 listview的xml是:

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:id="@android:id/list"
    android:layout_weight="1"
    android:dividerHeight="4dp" />

项目的XML布局是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/fromId"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

<TextView
    android:id="@+id/fromName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="false"
    android:layout_weight="1" />

<TextView
    android:id="@+id/toId"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

<TextView
    android:id="@+id/toName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="false"
    android:layout_weight="1"/>
</LinearLayout>

我在片段中也有以下内容:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    MyItem item = (MyItem)l.getItemAtPosition(position);
}

但是,这些项目无法点击。

我错过了什么?

3 个答案:

答案 0 :(得分:2)

你试过

吗?
    ListView listView = getListView();
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getActivity().getBaseContext(), "Item clicked: " +  [position], Toast.LENGTH_LONG).show();
            // Your Staff
        }
    });

或者

 getListView().setOnItemClickListener(this); // onActivityCreated()


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT)
                .show();

    }

<强>被修改

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getActivity().getBaseContext(), "Item clicked: " +  [position], Toast.LENGTH_LONG).show();
        MyItem item = (MyItem)l.getItemAtPosition(position);
    }

答案 1 :(得分:1)

尝试添加到ListView布局

android:clickable="true"

在ListFragment中实现listView.setOnItemClickListener

答案 2 :(得分:0)

在商品父版面

中使用此行
android:descendantFocusability="afterDescendants"

它有三个选项afterDescendants,beforeDescendants和blockDescendants。您应该使用其中一个可以使用