在 ListFragment 中使用自定义 ListView

Posted

技术标签:

【中文标题】在 ListFragment 中使用自定义 ListView【英文标题】:Using a custom ListView in a ListFragment 【发布时间】:2015-02-18 02:32:53 【问题描述】:

我正在尝试在 ListFragment 中从 DevBytes 实现 this dynamicListView。

来源:http://developer.android.com/shareables/devbytes/ListViewDraggingAnimation.zip

我通过创建一个简单的布局来做到这一点

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_
    android:layout_ >

    <com.example.android.listviewdragginganimation.DynamicListView
        android:id="@android:id/list"
        android:layout_
        android:layout_ />

</RelativeLayout>

并在我的 ListFragment 中扩展此布局

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    inflater.inflate(R.layout.simple_list_layout, container);
    return super.onCreateView(inflater, container, savedInstanceState);

DynamicListView 似乎已正确初始化(它的 init(Context) 函数已运行)。但它只是像普通的 ListView 一样工作。即项目全部显示,我可以上下滚动,但 DynamicListViews onItemLongClickListener 永远不会被调用。

需要做些什么吗?

【问题讨论】:

你需要在你的fragment中覆盖onItemLongClickListener 【参考方案1】:

您正在夸大自定义布局,但返回默认布局。将代码更改为

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    return inflater.inflate(R.layout.simple_list_layout, container);

之后您可以像往常一样拨打getListView().setOnLongClickListener(myClickListener)

编辑:在布局中添加第二个视图,ID 为 android:id="@id/android:empty",以获得额外的空状态。

【讨论】:

以上是关于在 ListFragment 中使用自定义 ListView的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 ListFragment 自定义布局的 Divider(为 null)

带有自定义 CursorAdapter 的 Android ListFragment 不显示数据

ListFragment 不接受我的布局

如何使用 SQLite 中的数据实现自定义 ArrayAdapter

android 怎么在自定义控件中获取控件所在fragment的实例

未调用自定义适配器 getview