1

Я пытаюсь заполнить ListView с помощью JSON, но у меня возникают проблемы с ссылкой на ListView.Невозможно ссылаться на ListView при использовании ListFragment

Вот мой 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 как «@ ид/Android: список».

Вот кусок кода, который я возникли проблемы с:

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

настоящее время у меня этот код в моем JSON методом разбора, но я попытался положить его в мой общедоступный метод View onCreateView в соответствии с другими предложениями что я читаю в Интернете, но у меня по-прежнему появляется следующая ошибка:

Cannot Resolve symbol 'list' 

Может ли кто-нибудь помочь в устранении моей проблемы?

+0

'android.R.id.list' – Luksprog

ответ

1

Класс ListFragment включает в себя ListView и адаптер внутри него, а также некоторые методы, которые позволяют получить ListView и работать на нем.

Вы можете обратиться к нему (от ListFragment) таким образом:

getListView() 

Вам необходимо обратиться к android:id="@id/android:list" только если вы хотите настроить макет. В этом случае вам необходимо переопределить метод onCreateView, а затем обратиться к элементу списка "@android:id/list"

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

и

getListView() 

являются одними и теми же вещами. Но вам не нужно использовать первое выражение, за исключением, если вы хотите настроить ListView внутри ListFragment

+0

Я пробовал использовать getListView(), но он все равно дает мне ту же ошибку. Я попытался использовать list = getListView() и list = (ListView) getListView(). FindViewById (R.id.list); Ни один из них не работает. – mhorgan

+0

нет, вам не нужно получать ссылку «ListView» из макета. У вас уже есть listview, вам просто нужно получить ссылку с помощью 'getListView()' – GVillani82

+0

Я попытался вызвать getListView() в методе JSON Parsing и в моем onActivityCreated. Когда я помещаю его в onCreateView, это приводит к сбою приложения. – mhorgan

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

Вы используете свою заявку R или андроид R? попробуйте следующий код:

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

Спасибо за ответ, я попытался с помощью Android.R.id. список, но не повезло. Он все еще сломан. – mhorgan

Смежные вопросы