Witajcie,
Zabrałem się Panowie za przeróbkę swojej metody pobierającej dane z bazy SQLite. Poprzednio korzystałem z ArrayList HashMap jednak @wojciechmaciejewski zasugerował aby to przerobić ponieważ HashMap jest bardzo zasobożerny. Więc ok, stworzyłem sobie klasę do obsługi wartości pobieranych z bazy:
public class ValuesPlayers {
private long id;
private String namePlayer;
public ValuesPlayers() {
super();
}
public ValuesPlayers(String namePlayer) {
super();
this.namePlayer = namePlayer;
}
public ValuesPlayers(long id, String namePlayer) {
super();
this.id = id;
this.namePlayer = namePlayer;
}
public ValuesPlayers(long id) {
super();
this.id = id;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNamePlayer() {
return namePlayer;
}
public void setValue(String namePlayer) {
this.namePlayer = namePlayer;
}
}
następnie w klasie obsługującej bazę utworzyłem metodę która pobiera mi dane do listy:
public List<ValuesPlayers> getAllPlayers() {
List<ValuesPlayers> playerList = new ArrayList<ValuesPlayers>();
SQLiteDatabase db = this.getReadableDatabase();
String sqlSelect = "SELECT " + _id + ", " +
columnPlayerName + " FROM " + TABLE_NAME;
Cursor select = db.rawQuery(sqlSelect, null);
if(select.moveToFirst()) {
do {
ValuesPlayers player = new ValuesPlayers();
player.setId(Integer.parseInt(select.getString(0)));
player.setValue(select.getString(1));
playerList.add(player);
}
while(select.moveToNext());
}
return playerList;
}
Teraz chciałbym Was prosić o pomoc, z czego należy skorzystać aby tą listę móc wyświetlić w widoku ListView w dwóch kolumnach? Mam utworzoną aktywność z listą oraz XML-a z widokiem listy (dwa elementy TextView):
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:stretchColumns="*">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/id"
android:layout_column="0"
android:padding="0dp"
android:layout_span="2"
/>
<TextView
android:id="@+id/playerNameListView"
android:layout_column="1"
android:padding="0dp"
/>
</TableRow>
</TableLayout>
---EDIT---
Czy w ogóle istnieje inna metoda na wyświetlenie takiej listy w dwóch kolumnach w widoku listVeiw? Przesiedziałem całą noc aby coś znaleźć i wszystkie przykłady jakie znalazłem do wyświetlania kilku kolumn (na razie dwie ale docelowo będzie ich 5 - 6) korzystają właśnie z HashMap. Mówiąc szczerze to nie mogę znaleźć innego sposobu na wyświetlenie zawartości listy jaką zbudowałem.