【问题标题】:Where is the ListView?列表视图在哪里?
【发布时间】:2014-11-19 17:19:20
【问题描述】:

我已经从给定的 Android 模板创建了一个 Master-Detail 应用程序。我需要创建一种方法来删除 longclick 上的项目,但我在该主题上找到的所有教程都涉及

getListView().setOnItemLongClickListener...
// and so on

我的问题是,我不知道 ListView 在哪里!当我在没有修改的情况下运行程序时,只是 Android 创建的基本模板,它运行良好。当我在 onCreate 方法中添加“getListView”时,程序崩溃了。

显然有一个ListView,因为我看到了一个列表,但我不知道它在默认模板中的哪个位置被掩埋。它没有在任何xml或java文件中列出,所以我不知道如何访问它。

这可能是一个愚蠢的问题,但我已经研究了好几个小时了,如果有任何建议,我将不胜感激。

【问题讨论】:

  • Activity继承自它的Activity基类是什么?
  • 我有 ItemListActivity 和 ItemListFragment。我原以为它会在片段中。
  • 你初始化你的列表视图了吗?如果活动是 ListActivity,则调用 ListView lv = getListView();然后设置一个 OnLongClickListener。当然,你必须 setAdapter 来管理你的 ListView 的内容
  • 我没有初始化它,因为我运行应用程序时会显示列表,所以我认为它已经是。我的 ItemListActivity 扩展了 FragmentActivity,而 ItemListFragment 扩展了 ListFragment。我以为 android 会设置模板以使其正常工作,而我们的老师没有提到任何这些,他只是向我们展示了默认模板的工作原理。
  • getListView 是来自ListFragment 的方法。如果您阅读的任何教程中都没有提到这一点,我会感到非常惊讶(如果是这样,您应该使用其他教程)

标签: android listview master-detail


【解决方案1】:

如果您是从 Master-Detail 模板创建的,则会生成一个扩展 ListFragment 的片段。尝试从 Fragment 中的 onCreate() 方法调用 getListView() 将导致以下异常:

java.lang.IllegalStateException: Content view not yet created

在创建 Fragment 的视图之前,您不能调用此方法(如异常状态所示)。您可以在 onViewCreated() 方法(或调用 onViewCreated() 之后调用的任何方法)中使用它。希望这可以帮助。

【讨论】:

  • 原来这正是我的问题。非常感谢!
【解决方案2】:

getListView 是 ListActivity 的一个方法。如果你不扩展它,你将看不到它

【讨论】:

  • 如果我使用片段,ItemListActivity应该是扩展ListActivity的那个吗?它目前正在扩展 FragmentActivity,因为这就是 android 的模板所说的,所以我认为片段应该是这样工作的。
  • ListFragment 可能是你想要的,但这取决于你的代码。
猜你喜欢
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多