使用ListFragment时无法引用ListView

时间:2015-07-20 16:14:24

标签: android listview android-fragments android-listfragment

我尝试使用JSON填充ListView但是我在引用ListView时遇到了麻烦。

这是我的layout_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">


<ListView
    android:id="@id/android:list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:drawSelectorOnTop="false" />


<TextView
    android:id="@android:id/empty"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="No data"        />
</LinearLayout>

我在ListFragment文档中读到,在设计自定义列表时,我需要将ListView的ID保持为&#34; @ id / android:list&#34;。

以下是我遇到问题的代码:

list = (ListView)getView().findViewById(R.id.list);

我目前在我的JSON解析方法中有这个代码但是我已经尝试将它放在我的公共View onCreateView方法中,根据我在线阅读的其他建议,但我仍然收到以下错误:

Cannot Resolve symbol 'list'

有人能帮助解决我的问题吗?

2 个答案:

答案 0 :(得分:1)

list = (ListView)getView().findViewById(R.id.list);

你使用你的应用程序R还是android的R?尝试像这样编码:

list = (ListView)getView().findViewById(android.R.id.list);

答案 1 :(得分:1)

ListFragment在其中包含listview和适配器,并且还提供了一些方法,允许您获取列表视图并对其进行操作。

您可以通过这种方式引用它(来自ListFragment):

getListView()

只有在您想要自定义布局时才需要参考android:id="@id/android:list"。在这种情况下,您需要覆盖onCreateView方法,然后引用列表元素"@android:id/list"

(ListView)getView().findViewById(android.R.id.list)

getListView() 

是相同的事情。但您不需要使用第一个表达式,除非您想要自定义ListView

中的ListFragment