我需要你的帮助!
我有一个包含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 :(
};
}
我尝试了很多不同的东西,但也许你们可以看到一个简单的解决方法,这可能是我忽略的。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:2)
删除布局中的滚动视图或将其定义为无法调焦,然后重试