baTimá
baTimá

Reputation: 544

How to show 2 database values in ListView?

I have 2 activities(Novamensagem & Mensagenssalva) in Novamensagem.java I have a spinner with contacts values, a EditText and a Save button. I select a contact and write a text and hit save. The TEXT gets saved, and when i open Mensagenssalva.java all the TEXTs i write and save is there in a ListView. So i want to know how to the ListView show the name of the contact i selected in the Spinner and then show the message. eg:

Person's name
Message i have written.

//EDIT//

now the error is: Force to Close the app when i compile it. The code now:

 ListView user = (ListView) findViewById(R.id.lvShowContatos);
    //String = simple value ||| String[] = multiple values/columns
    String[] campos = new String[] {"nome", "telefone"};

    list = new ArrayList<String>();
    c = db.query( "contatos", campos, null, null, null, null, null);
    c.moveToFirst();

    if(c.getCount() > 0) {
        while(true) {
           list.add(c.getString(c.getColumnIndex("nome")).toString());
           list.add(c.getString(c.getColumnIndex("telefone")).toString());
           if(!c.moveToNext()) break;
        }
    }

     // the XML defined views which the data will be bound to
     int[] to = new int[] { R.id.nome_entry, R.id.telefone_entry };

     SimpleCursorAdapter myAdap = new SimpleCursorAdapter(this, R.layout.listview, c , campos, to, 0);

     user.setAdapter(myAdap);

The LogCat errors: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mensagem/com.example.mensagem.Contato}: java.lang.IllegalArgumentException: column '_id' does not exist So the thing is, its trying to pull a "_id" from my database, but i dont have a "_id" column/row in it.

Upvotes: 0

Views: 671

Answers (2)

Sam
Sam

Reputation: 86948

Posted from comments

You will have more control over your app while writing less lines of code by using a SimpleCursorAdapter as we discussed.

In order to use any CursorAdapter, your table must have a _id INTEGER PRIMARY KEY column, which you don't have. While I still recommend altering your table to add this column, there is a quick fix. If you don't specify a primary key all SQLite tables create an integer primary key by default, you can reference it with rowid, oid or _rowid_. But Android requires that the integer primary key column is named _id... Simply create an alias with the keyword AS for the meantime:

String[] campos = new String[] {"rowid as _id", "nome", "telefone"};

Upvotes: 1

Martin Vandzura
Martin Vandzura

Reputation: 3127

You need to create customAdapter instead of ArrayAdapter. Check out this link http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

Upvotes: 0

Related Questions