ListView aus SqLite DB, erstellen

  • Antworten:1
  • Geschlossen
Andi G
  • Forum-Beiträge: 7

03.02.2014, 11:20:27 via Website

Hallo ich bin neu hier im Forum und bitte euch um eure Hilfe.
Ich habe schon einige Tag nach der Lösung gesucht, aber nix hat mir geholfen bei meinem Problem.

Ich möchte eine ListView erstellen, mit jeweils 2 TextViews.
Dabei verwende ich einen ArrayAdapter, den ich mit einer ArrayList <String[]> , einem selbstbearbeitetem "ListViewLayout" und dem id int - Wert des ersten TextViews initialisiert habe.

Das Problem ist, dass in der getView Methode eine NullPointerException geworfen wird.

Ihr seht es im Quellcode:

public class ListPersonen extends Activity {

private static final String TAG = ListPersonen.class.getSimpleName();

private RegisterHelper helper;
private SQLiteDatabase registerDB;

private ArrayAdapter<String[]> adapter;
private ArrayList<String[]> entriesPersonen;

private ListView listView;
private Cursor personenCursor;

public TextView tv_Name, tv_Amount;

private final String SHOW_THIS_ENTRIES = "SELECT * FROM Personen ORDER BY name";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.list_personen_entries);

if (helper == null)
helper = new RegisterHelper(this);

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

showPersonenEntries();

Log.d(TAG, "Vor getView Methode");

adapter = new ArrayAdapter<String[]>(this,
andi.example.thedepts.R.layout.personen_info,
andi.example.thedepts.R.id.tv_peronen_name, entriesPersonen) {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.d(TAG, "In der getView Methode");
View v = convertView;

String[] entry = entriesPersonen.get(position);

if (v == null) {
Log.d(TAG, "v = null");

LayoutInflater myInflater = (LayoutInflater) ListPersonen.this
.getSystemService(LAYOUT_INFLATER_SERVICE);

v = myInflater.inflate(R.layout.personen_info, null);

tv_Name = (TextView) v
.findViewById(andi.example.thedepts.R.id.tv_peronen_name);
tv_Amount = (TextView) v
.findViewById(andi.example.thedepts.R.id.tv_personen_betrag);

// tv_Name.setText(entry[0]);
// tv_Amount.setText("€ " + entry[1]);

}

Log.d(TAG, entry[0] + " " + entry[1]);

// if (Float.parseFloat(entry[1]) < 0) {
// tv_Amount.setTextColor(Color.RED);
// }
// if (Float.parseFloat(entry[1]) > 0) {
// tv_Amount.setTextColor(Color.GREEN);
// }

return v;
}

};
Log.d(TAG, "Nach getView Methode");

listView.setAdapter(adapter);
// setListener();

}

public static class ViewHolder {
public TextView tv_Name, tv_Amount;
}

public String showPersonenEntries() {
registerDB = helper.getReadableDatabase();
entriesPersonen = new ArrayList<String[]>();
try {
personenCursor = registerDB.rawQuery(SHOW_THIS_ENTRIES, null);
while (personenCursor.moveToNext()) {
String temp1 = personenCursor.getString(0);
float temp2 = personenCursor.getFloat(1);

String[] entry = { temp1, String.valueOf(temp2) };

entriesPersonen.add(entry);

}

Log.d(TAG, "Wird angezeigt Personen");
} catch (Exception e) {
Log.e(TAG, "Fehler beim anzeigen :" + e.toString());
} finally {
registerDB.close();
}
return null;
}

vielleicht kann mir irgendwer helfen. Ich wäre sehr Dankbar.

Andy N.
  • Forum-Beiträge: 22.375

03.02.2014, 11:23:48 via App

Hallo Andi,

Nachdem ich deinen ursprünglichen Thread in die passende Kategorie verschoben habe, geht es dort bitte weiter. Hier mach ich der besseren Übersichtlichkeit halber mal zu.

https://www.nextpit.de/de/android/forum/thread/589223/ListView-aus-SqLite-DB-mittels-ArrayAdapter-initialisieren

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins