2015-08-15 3 views
0

Я потратил слишком много времени, чтобы заполнить списокView в фрагменте.как сделать и заполнить listView в фрагменте?

Я не хочу, чтобы фрагмент списка был заполнен БД, просто хочу, чтобы он был заполнен вручную, если бы вы могли показать, как сделать так, чтобы вы могли прокручивать, что было бы полезно.

"rootView.findViewById" приходит с ошибкой "Не удается разрешить символ 'rootView'"

вот мой код:

класса Избранное общественных расширяет фрагмент {

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(fragment_favourites, container, false); 

    String[] favouritefoods = {"Lasagne", "cheese Burrito", "jalepano bread", "chedder cheese"}; 

    //Build adapter 
    ArrayAdapter<String> favefoodadapter = new ArrayAdapter<String>(
      getActivity(), //some context for the activity 
      R.layout.favelist, //layout to be displayed(create) 
      favouritefoods); //strings to be diplayed 



    ListView listView = (ListView) rootView.findViewById(R.id.favefoodslist); 
    listView.setAdapter(favefoodadapter); 


    return rootView; 
} 

}

и fragments_favourites.xml:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="activity.Favourites" 
android:id="@+id/favefoodfragment"> 

<TextView 
    android:id="@+id/favourites_textview" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="100dp" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:textSize="45dp" 
    android:text="favourites" 
    android:textStyle="bold" /> 

<TextView 
    android:layout_below="@id/favourites_textview" 
    android:layout_centerInParent="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="12dp" 
    android:layout_marginTop="10dp" 
    android:gravity="center_horizontal" 
    android:text="Edit fragment_home.xml to change the appearance" 
    android:id="@+id/textView3" /> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/favefoodslist" 
    android:layout_below="@+id/textView3" 
    android:layout_centerHorizontal="true" /> 

Пожалуйста, помогите и произведите простой и простой перевод. Я новичок в этом. Спасибо.

LogCat:

08-18 13:24:57.100 31954-31954/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.nrnazz747123.navigationapp, PID: 31954 
    java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.ListView 
      at activity.Favourites.onCreateView(Favourites.java:40) 
      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:953) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136) 
      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) 
      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499) 
      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:456) 
      at android.os.Handler.handleCallback(Handler.java:808) 
      at android.os.Handler.dispatchMessage(Handler.java:103) 
      at android.os.Looper.loop(Looper.java:193) 
      at android.app.ActivityThread.main(ActivityThread.java:5345) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

ты нового в кодировании тоже? Если нет, просто объявите глобальную переменную: 'Просмотр rootView', а затем установите' rootView' в 'onCreateView'. –

+0

Я не вижу ошибок с текущим кодом. Попробуйте очистить перестройку. Что находится в строке 40 в Избранных? – poss

ответ

0

Если вы используете статические данные, вы должны сделать это в методе onCreateView. Если вам нужно повторно заселить его при загрузке данных, например, вы должны инициализировать адаптер с помощью пустого ArrayList. Когда вы получите данные, скопируйте их в пустой ArrayList и вызовите adapter.notifyDatasetChanged().

0

В действии вы не можете использовать this как ваш context. Вам нужно получить активность, которую ваш фрагмент принадлежит вашему контексту, с getActivity().

Далее вы не можете выполнить операции findViewById(), прежде чем у вас действительно будет вид. Представление создается в onCreateView, но вы вызываете его уже в onCreate. Все видимые отношения должны выполняться в представлении, которое вы получаете от onCreateView. Для того, чтобы найти ваш ListView вы должны переместить его туда и назвать его

ListView listView = (ListView) rootView.findViewById(R.id.favefoodslist); 

EDIT

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(fragment_favourites, container, false); 

    String[] favouritefoods = {"@@@", "!!!!", "...", "..."}; 

    //Build adapter 
    ArrayAdapter<String> favefoodadapter = new ArrayAdapter<String>(
      getActivity(), //some context for the activity 
      R.layout.favelist, //layout to be displayed(create) 
      favouritefoods); //strings to be diplayed 



    ListView listView = (ListView) rootView.findViewById(R.id.favefoodslist); 
    listView.setAdapter(favefoodadapter);   


    return rootView; 
} 
+0

Спасибо за помощь, но у меня есть ошибка с rootView. то, что вы сказали мне, прекрасно работает, за исключением этого. Я не знаю, как инициализировать rootView, и он продолжает просить об этом. Еще раз спасибо за быстрый ответ и помощь. –

+0

@helpplease посмотрите на свой '@Override public View onCreateView'. rootview есть. – poss

+0

Я вижу, что он есть, но он говорит, что не может решить эту ошибку. –

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