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:

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 ...
Crear prototipos para aplicaciones Android – android prototipos
Pregunta: estoy interesado en optar por una herramienta que me sea bastante util para poder realizar prototipos de aplicaciones móviles, especificamente para Android. Empece buscando ...
¿Como Se Instala Un Apk Y Como Se Ve Despues? – android
Pregunta: Tengo una duda sobre que pasa con ese archivo apk una vez instalado si se queda como uno solo o se separa en fragmentos ...
¿Como usar la clase Intent para mostrar las apps del usuario – android android-intent
Pregunta: Quiero que mi app muestre las aplicaciones del usuario en un ListView. He tratado de investigar y me salio en ingles la mención a esta ...
Calcular distancia entre dos coordenadas android – android
Pregunta: quisiera saber como puedo hallar la distancia entre 2 coordenadas en kilómetros en trayecto vía automóvil, estoy usando la API de google maps. Agradezco cualquier ...
¿Cómo puedo crear una aplicación Android que no se pueda cerrar así como WhatsApp? – android android
Pregunta: Esta pregunta ya tiene una respuesta aquí: ...
Spinner y EditText – java android
Pregunta: Tengo este código para cargar un spinner con datos de una base de datos: private class Getfrutas extends AsyncTask<Void, Void, Void> { ...
¿ Por qué se me detiene la aplicación al usar este pequeño código? – java android bottombar
Pregunta: Tengo un bottomBar donde tengo 5 opciones, la última es la del mapa de google API. Mi problema es que al hacer click en ...
¿ Cómo implemento este código para android 6.0? – java android
Pregunta: Tengo en un Fragment implementado el Google API y FUNCIONA. Pero funciona en mis 3 móviles que son jellybean, kitkat y lollipop. El ...
¿Cómo guardar un ImageView en Android? – java android
Pregunta: Mi aplicación está compuesta por un botón y un ImageView y cuando se aprieta el botón la ImageView recibe una imagen que tengo en ...
¿Como Se Puede Almacenar Una Imagen En Una Base De Datos SqlLite? – android
Pregunta: Quiero saber si es posible almacenar una imagen en una base de datos Sql Lite. Gracias. Preguntado por: PowerApp La imagen se guardaría ...
Como usar windowSoftInputMode=“adjustNothing” – android android-layout
Pregunta: Buenas, tengo un layout para una actividad en el cual cuando voy a utilizar el teclado android este oculta algunos views, he estado buscando ...
Tags:

Add a Comment

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