Put subitem in a listview

0

Hi, I'd like to put a subitem in my listview but I can not get it. This is my activity_list

<?xml version="1.0" encoding="utf-8"?>

<ListView
    android:id="@+id/lista"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></ListView>

This is my class list

public class Lista extends AppCompatActivity {

ListView lv ;
ArrayList<String> lista;
ArrayAdapter adaptador;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);
    lv = (ListView)findViewById(R.id.lista);
    DbHelper db = new DbHelper(getApplicationContext(),null,null,1);
    lista = db.llenar_lv();
    adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1,lista);
    lv.setAdapter(adaptador);


}

}

And this is the method full_lv

    public ArrayList llenar_lv(){
    ArrayList<String> lista = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    String q = "SELECT * FROM users";
    Cursor registros = db.rawQuery(q,null);
    registros.moveToFirst();

        while(registros.moveToNext()){
            lista.add(registros.getString(1));
            lista.add(registros.getString(2));

        }


    return lista;
}

Image I want the subitem to come out but I can not get it, it only comes out of item 1

Error in the SimpleAdapter

    
asked by zzxbx 06.12.2017 в 01:41
source

1 answer

1

If you could do it without needing a Custom adapter, but you have to work your data.

You would have something like this:

List<Map<String, String>> data = new ArrayList<Map<String, String>>();
     while(registros.moveToNext()){
     Map<String, String> datum = new HashMap<String, String>(2);
        datum.put("datos1", registros.getString(1));
        datum.put("datos2", registros.getString(2));
        data.add(datum);
            }

    }
    SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"datos1", "datos2"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});
    itemList.setAdapter(adapter);

Here you have more info about the SimpleAdapter:   SimpleAdapter

UPDATE

Updating your code would look like this:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);
    lv = (ListView)findViewById(R.id.lista);
    DbHelper db = new DbHelper(getApplicationContext(),null,null,1);
    List<Map<String, String>> data = db.llenar_lv();
   SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"datos1", "datos2"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});
    lv.setAdapter(adapter);


}



    public List<Map<String, String>> llenar_lv(){
    ArrayList<String> lista = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    String q = "SELECT * FROM users";
    Cursor registros = db.rawQuery(q,null);
    registros.moveToFirst();

       List<Map<String, String>> data = new ArrayList<Map<String, String>>();
     while(registros.moveToNext()){
     Map<String, String> datum = new HashMap<String, String>(2);
        datum.put("datos1", registros.getString(1));
        datum.put("datos2", registros.getString(2));
        data.add(datum);
            }
       return data;
    }
    
answered by 06.12.2017 / 17:16
source