OnItemClickListener不在片段中工作(Multicolumn ListView)

时间:2014-01-20 23:52:36

标签: android android-listview onclicklistener android-listfragment

我需要你的帮助!

我有一个包含2个片段的主活动(一个用于标题,一个用于多列列表),其中一个片段是一个ListFragments包含一个多列ListView,它在可滚动视图中加框。此ListFragment会覆盖onItemClickListener方法。我可以滚动视图和所有内容,但是当我点击列表视图时,不会调用监听器!

我尝试了许多不同的解决方案,比如试图阻止视图的可聚焦性,但到目前为止还没有任何工作。也许你们可以帮助我。

包含两个片段的父活动:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1"
    android:descendantFocusability="blocksDescendants"
    tools:context=".MainWindow" 
     >

    <fragment
        android:id="@+id/headerfragment"
        android:name="lindcom.mobile.estock.fragments.ListHeaderFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:descendantFocusability="blocksDescendants"
         />

    <fragment
        android:id="@+id/unitlistfragment"
        android:name="lindcom.mobile.estock.fragments.UnitsListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="blocksDescendants"
         />

</LinearLayout>

这是我用于多列列表的布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:descendantFocusability="blocksDescendants" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1" >

        <TextView
            android:id="@+id/unitsCol1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.40"
            android:ellipsize="marquee"
            android:maxLines="1"
            android:scrollHorizontally="true"
            android:singleLine="true"
            />

        <TextView
            android:id="@+id/unitsCol2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.40"
            android:ellipsize="marquee"
            android:maxLines="1"
            android:scrollHorizontally="true"
            android:singleLine="true" 
            />


        <TextView
            android:id="@+id/unitsCol3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:ellipsize="marquee"
            android:maxLines="1"
            android:scrollHorizontally="true"
            android:singleLine="true" 
            />
    </LinearLayout>

</ScrollView>

在我获取数据后,上面的布局填充在异步任务中:

ListAdapter adapter = new SimpleAdapter(
                    fragment.getActivity().getBaseContext(), this.unitList,
                    R.layout.unit_list_item, new String[] { TAG_OWNER, TAG_NAME,
                            TAG_CONTENT }, new int[] { R.id.unitsCol1, R.id.unitsCol2,
                            R.id.unitsCol3 });


            fragment.setListAdapter(adapter); // Set the adapter to the listFragment

然后对于on click侦听器,我只是在片段中覆盖它:

public class UnitsListFragment extends ListFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Fetch stuff here

    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {

        String type = l.getItemAtPosition(position).getClass().toString();

        Log.d("Item type was", type);
            // THIS IS NEVER INVOKED :(


    };
}

我尝试了很多不同的东西,但也许你们可以看到一个简单的解决方法,这可能是我忽略的。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:2)

删除布局中的滚动视图或将其定义为无法调焦,然后重试