ListFragment, как получить listView?
Я переношу свое приложение из AsyncTasks в Fragements.
Но как я могу получить доступ к элементу listView (id: list) внутри моего фрагмента?
class MyFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.list_fragment, container, false);
ListView listView = getListView(); //EX:
listView.setTextFilterEnabled(true);
registerForContextMenu(listView);
return v;
}
}
XML
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
Пример:
Caused by: java.lang.IllegalStateException: Content view not yet created
Ответы
Ответ 1
поскольку doc onCreateView
остается:
creates and returns the view hierarchy associated with the fragment
так как метод не возвращается, вы не сможете получить доступ к ListView
через getListView()
. Вы можете получить действительную ссылку в обратном вызове onActivityCreated
.
Или вы можете попробовать использовать v.findViewById(android.R.id.list)
, если ListView
объявлен внутри list_fragment.xml
Ответ 2
Получить список Просмотр из представления, который вы получаете раньше.
View view = inflater.inflate(android.R.layout.list_content, null);
ListView ls = (ListView) view.findViewById(android.R.id.list);
// do whatever you want to with list.
Ответ 3
Самое простое и надежное решение этой проблемы - переопределить onActivityCreated(); и делайте там свои манипуляции с списком.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
ListView listView = getListView(); //EX:
listView.setTextFilterEnabled(true);
registerForContextMenu(listView);
super.onActivityCreated(savedInstanceState);
}
Ответ 4
Я смог получить доступ к ListView с помощью метода OnViewCreated.
Ответ 5
ListFragment listFrag = new ListFragment(){
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ListView list = getListView();
// DO THINGS WITH LIST
}
};