TransWikia.com

Pasar elementos Listview a un TextView

Stack Overflow en español Asked by Nicolas Oporto on December 5, 2021

Buenas, en mi codigo tengo un adapter que contiene elementos de mi base de datos, los cuales quiero insertar en textviews de otra actividad (con ids), el problema es que me tira NullPointException, la idea original era pasar directamente los datos del sqlite a lo textview pero no encontre la forma de acceder a los valores de la base de datos, por lo que lo pasé a un array y no funciona, porfavor si alguien sabe como solucionar esto, adjunto codigo. Además tengo la duda sobre cual layout debo desplegar en setContentView(R.layout.activity_list); (Dado que en activity_horario xml estan creados los text view)
El error surge en Select con el listview.getChild

ListActivity (pasar datos a los textviews)

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);


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



    BDSQLite bd= new BDSQLite(getApplicationContext(), "Horario", null,1);
    db= bd.getReadableDatabase();
    String sql="select * from Horario";
    Cursor c;
    String ora;
    try {
        c=db.rawQuery(sql,null);
        arrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
        if(c==null||c.getCount()==0) {
            Toast.makeText(getBaseContext(), "No hay eventos disponibles", Toast.LENGTH_LONG).show();
        }




        if(c.moveToFirst()){
            do {
                ora=c.getString(1);
                arrayAdapter.add(ora);
            } while(c.moveToNext());
            listView.setAdapter(arrayAdapter);
        }

    }catch (Exception ex) {
        Toast.makeText(getApplication(), "Error: "+ex.getMessage(), Toast.LENGTH_SHORT).show();
        this.finish();

    }


   // int count = listView.getAdapter().getCount();
    for(int i = 0; i <= 5; i = i + 1)
    {


        String Select= (String) listView.getChildAt(i).toString();
        if (i==0){
            TextView TEXTO11=(TextView) findViewById(R.id.t11);
            TEXTO11.setText(Select);


        }




    }


    }

error:

ava.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.marcela.sqlitetet/com.example.marcela.sqlitetet.ListActivity}: java.lang.NullPointerException
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2193)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2243)
                                                                             at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:136)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5019)
                                                                             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:779)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                          Caused by: java.lang.NullPointerException
                                                                             at com.example.marcela.sqlitetet.ListActivity.onCreate(ListActivity.java:70)

EDIT:

public class ListActivity extends AppCompatActivity {
//al mantener la wea apretada
private SQLiteDatabase db;
private ListView listView;
private ArrayAdapter<String> arrayAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    setContentView(R.layout.activity_horario);

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



    BDSQLite bd= new BDSQLite(getApplicationContext(), "Horario", null,1);
    db= bd.getReadableDatabase();
    String sql="select * from Horario";
    Cursor c;
    String ora;
    try {
        c=db.rawQuery(sql,null);
        arrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
        if(c==null||c.getCount()==0) {
            Toast.makeText(getBaseContext(), "No hay eventos disponibles", Toast.LENGTH_LONG).show();
        }




        if(c.moveToFirst()){
            do {
                ora=c.getString(1);
                arrayAdapter.add(ora);
            } while(c.moveToNext());
            listView.setAdapter(arrayAdapter);
        }

    }catch (Exception ex) {
        Toast.makeText(getApplication(), "Error: "+ex.getMessage(), Toast.LENGTH_SHORT).show();
        this.finish();

    }


   int count = listView.getAdapter().getCount();
    for(int i = 0; i <= count; i = i ++)
    {
        if (i==0){
           TextView TEXTO11=(TextView) findViewById(R.id.t11);
           TEXTO11.setText(listView.get(i));
        }
    }






}





}

Activity horario (tiene los textview, adjunto fragmento del codigo).

<TableRow
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="#000000"
    android:id="@+id/fila1">

    <TextView
        android:layout_width="44dp"
        android:layout_height="match_parent"
        android:layout_column="0"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text="@string/bloque_12"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="10sp"
        />


    <TextView
        android:layout_width="7dp"
        android:layout_height="match_parent"
        android:layout_column="1"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/t11"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_column="2"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/t12"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_column="2"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/t13"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_column="2"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text=""
        android:id="@+id/t14"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_column="2"
        android:layout_margin="1dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:text=""
        android:id="@+id/t15"
        android:textAppearance="?android:attr/textAppearanceLarge" />


</TableRow>

Horario activity:

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_horario);

    Button boton = (Button) findViewById(R.id.boton1);
    boton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(HORARIOActivity.this, Editar.class);
            startActivity(i);

        }
    });


}

}

2 Answers

cuando lo muestras en un listview seria algo asi ; ArrayAdapteradapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arregle); ListView lista=(ListView)findViewById(R.id.Lista); lista.setAdapter(adapter);

pero si quieres mostrarlo en un textview borras ese codigo y en tu ciclo do if le agregas

mtextmostrar.setText(datos);

Answered by Hector Jakson on December 5, 2021

En vez que utilizar listView.getChildAt(i).toString(); Intenta crear un array que contendra los elementos de la base de datos:

//...
Cursor c;
String ora;
ArrayList<String> datos = new ArrayList<String>();

try {
  //...

Ahora, cuando obtengas los datos desde la base de datos lo agregas a la lista:

//...

if(c.moveToFirst()){
    do {
        ora=c.getString(1);
        arrayAdapter.add(ora);

        //agregamos el elemento al array
        datos.add(ora)
    } while(c.moveToNext());
    listView.setAdapter(arrayAdapter);
}

//...

Entonces ahora solo tendrías acceder a los elementos utilizando el metodo get() de la lista:

//...
for(int = 0; i < datos.size(); i++)
{

    if (i==0){
        TextView TEXTO11=(TextView) findViewById(R.id.t11);

        // le asigamos el texto al TEXT11
        TEXTO11.setText(datos.get(i));
    }
}

//...

Codigo completo del metodo onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    setContentView(R.layout.activity_horario);

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


    BDSQLite bd= new BDSQLite(getApplicationContext(), "Horario", null,1);
    db= bd.getReadableDatabase();
    String sql="select * from Horario";
    Cursor c;
    String ora;
    ArrayList<String> datos = new ArrayList<String>();

    try {

        c=db.rawQuery(sql,null);
        arrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

        if(c==null||c.getCount()==0) {
            Toast.makeText(getBaseContext(), "No hay eventos disponibles", Toast.LENGTH_LONG).show();
        }

        if(c.moveToFirst()){
            do {
                ora=c.getString(1);
                arrayAdapter.add(ora);

                // agregas los datos al array
                datos.add(ora)
            } while(c.moveToNext());
            listView.setAdapter(arrayAdapter);
        }

    }catch (Exception ex) {
        Toast.makeText(getApplication(), "Error: "+ex.getMessage(), Toast.LENGTH_SHORT).show();
        this.finish();

    }


    int count = listView.getAdapter().getCount();
    for(int i = 0; i <= datos.size(); i = i ++)
    {
        if (i==0){
           TextView TEXTO11=(TextView) findViewById(R.id.t11);
           TEXTO11.setText(datos.get(i));
        }
    }

}

Answered by Einer on December 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP