Crear listview en un Fragment en android – android

Pregunta:


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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.jorge.appciudadanoconsciente.FragmentoInicio"
android:orientation="vertical">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listview"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"

    android:dividerHeight="10dp"
    />

</LinearLayout>
Preguntado por: Jorge1023

sioesi

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

Cambia esto:

listView = (ListView) findViewById(R.id.listview);

Por:

listView = (ListView)getActivity().findViewById(R.id.listView);

tal cual dice sioesi, estas buscando el id de la vista en un layout que no lo contiene

Yo suelo trabajar asi y funciona perfecto:

public class test extends Fragment {
private View v;
private EditText editText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    v=inflater.inflate(R.layout.fragment_test, container, false);
    editText = v.findViewById(R.id.editText2);
    return v;
}

}
de esa manera “guardas” la referencia a la vista en la variable v para poder usarla para inicializar los componentes dentro de la vista correcta

v=inflater.inflate(R.layout.fragment_test, container, false);

luego, obtener la referencia que necesitas desde la variable “v”. De esa forma podes inicializar todos los controles que estan dentro del xml asociado a ese fragmento y podras usarlos como acostumbras

editText = v.findViewById(R.id.editText2);

al final no olvides retornar la vista que esta guardada en la variable “v”

return v;

Fuente

Related Posts:

Push notifications to devices and browsers via Pushbullet
...
Send messages to mobile devices with Google Firebase.
...
A PHP library for easy PushOver service use: send real-time notifications to your Android and iOS devices.
...
A simple PHP library for the Pushover service
...
Google Cloud Messaging (GCM) PHP Server Library
...
Read basic info about an application from .apk file.
...
A PHP library for sending GCM messages
...
A Bundle for Symfony2 projects to send notifications in mobile devices through Firebase Cloud Messaging API
...
PHP API for Firebase Cloud Messaging from Google
...
PHP application server for google firebase cloud messaging (FCM)
...
Standalone PHP library for easy devices notifications push.
...
Girar Rectángulo con LibGDX – android libgdx
Pregunta: Estoy haciendo un programilla de prueba que se compone de : 4 botones , arriba, abajo, izquierda y derecha. Una nave espacial, formada por un ...
Botones con android y LibGDX – android libgdx
Pregunta: Buenas, he creado un pequeño boton en android, con libGDX muy sencillo, pero el problema es el siguiente: Le tengo asignada una funcion que escribe ...
¿Location manager Android? Experiencias – android mysql android-studio
Pregunta: He desarrollado una aplicación Gps que envía información a Mysql cada 10 seg atraves de locationmanager. ¿Según su experiencia hasta cuanto es posible disminuir ...
Crear cuenta regresiva N segundos mientras se visualiza una Activity en Android – java android
Pregunta: Quiero implementar una cuenta regresiva de N segundos, que se inicie cuando la Activity se muestre, se pare el contador cuando el usuario decide ...
Tags:

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *