Crear listview en un Fragment en android

publicado por: Anonymous

Estoy creando una aplicación en la cual incluyo un listview, en un Fragment. Dicho listview ya lo había ejecutado en un activity normal y todo muy bien, ahora que lo quiero ejecutar en un fragmentme salen varios errores.

Este es mi codigo Java del fragment

public class Fragmento01 extends Fragment {

ListView listView;
String[] elementos = {"jose", "pedro", "maria", "miguel", "luis", "daniel", "elena", "Laura", "Sofia"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    listView = (ListView) findViewById(R.id.listview);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,elementos);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getApplicationContext(),String.valueOf(position),Toast.LENGTH_SHORT).show();

        }
    });
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_fragmento01, container, false);
}

}

este es mi codigo xml del fragmento

_x000D_

_x000D_

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"_x000D_
xmlns:app="http://schemas.android.com/apk/res-auto"_x000D_
xmlns:tools="http://schemas.android.com/tools"_x000D_
android:id="@+id/activity_main"_x000D_
android:layout_width="match_parent"_x000D_
android:layout_height="match_parent"_x000D_
android:paddingBottom="@dimen/activity_vertical_margin"_x000D_
android:paddingLeft="@dimen/activity_horizontal_margin"_x000D_
android:paddingRight="@dimen/activity_horizontal_margin"_x000D_
android:paddingTop="@dimen/activity_vertical_margin"_x000D_
tools:context="com.example.jorge.appciudadanoconsciente.FragmentoInicio"_x000D_
android:orientation="vertical">_x000D_
_x000D_
<ListView_x000D_
    android:layout_width="wrap_content"_x000D_
    android:layout_height="wrap_content"_x000D_
    android:id="@+id/listview"_x000D_
    android:layout_alignParentLeft="true"_x000D_
    android:layout_alignParentStart="true"_x000D_
    android:layout_alignParentTop="true"_x000D_
_x000D_
    android:dividerHeight="10dp"_x000D_
    />_x000D_
_x000D_
</LinearLayout>

_x000D_

_x000D_

_x000D_

solución

El error que estas cometiendo es que estas buscando la Id de tu listview como si fuese parte de onCreate de una Activity.

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

    return inflater.inflate(R.layout.fragment_fragmento01, container, false);
}

@Override
public void onActivityCreated(Bundle state) {
    super.onActivityCreated(state);
    listView = (ListView)getView().findViewById(R.id.listview);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_expandable_list_item_1,elementos);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getActivity().getApplicationContext(),String.valueOf(position),Toast.LENGTH_SHORT).show();

    }
});
}

Aqui buscamos la Id de tu listview desde getView y no buscando la Id en un layout. El view lo retornamos y configuramos en onCreateView

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *