F
FloFMP
Neues Mitglied
- 0
Hallo zusammen,
Vorabinfo´s:
Ich lass auf meiner MainActivity einen ListView erzeugen.
Diese Elemente für den ListView bekommt er aus der SQLite Datenbank.
Hierfür habe ich auch einen OnClickListener hinterlegt, sobald
auf ein Item geklickt wird, öffnet sich eine Eingabemaske,
wobei die Felder nicht leer sind, sondern mit den Informationen zum
geklickten Item gefüllt sind.
ich habe folgendes Problem:
Wenn ich Elemente wieder aus der Datenbank lösche,
hat das erste Item nicht die ID 0, welche vom OnClickListener
in der Variable position übergeben wird, sondern eine andere Zahl.
Dann wird die Maske mit Daten von Item´s gefüllt, aber nicht mit den
Daten vom geklickten Item
Ich brauche immer die Datenbank-ID von diesem Item und nicht die Position vom ListView,
welche derzeit bei mir übergeben wird.
Ist dies irgendwie möglich direkt die ID vom geklickten Element zu bekommen?
Ich hoffe mein Problem ist verständlich.
Hier noch Code:
MainActivity:
Hier von meiner Eingabemaske:
Vorabinfo´s:
Ich lass auf meiner MainActivity einen ListView erzeugen.
Diese Elemente für den ListView bekommt er aus der SQLite Datenbank.
Hierfür habe ich auch einen OnClickListener hinterlegt, sobald
auf ein Item geklickt wird, öffnet sich eine Eingabemaske,
wobei die Felder nicht leer sind, sondern mit den Informationen zum
geklickten Item gefüllt sind.
ich habe folgendes Problem:
Wenn ich Elemente wieder aus der Datenbank lösche,
hat das erste Item nicht die ID 0, welche vom OnClickListener
in der Variable position übergeben wird, sondern eine andere Zahl.
Dann wird die Maske mit Daten von Item´s gefüllt, aber nicht mit den
Daten vom geklickten Item
Ich brauche immer die Datenbank-ID von diesem Item und nicht die Position vom ListView,
welche derzeit bei mir übergeben wird.
Ist dies irgendwie möglich direkt die ID vom geklickten Element zu bekommen?
Ich hoffe mein Problem ist verständlich.
Hier noch Code:
MainActivity:
Code:
public class MainActivity extends AppCompatActivity {
com.project.daniel_flo.fridgemanagement.DBAdapter db = new com.project.daniel_flo.fridgemanagement.DBAdapter(this);
//ListView on Click Variable
public static String ROW_ID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ListView
List productlist = new ArrayList<String>();
ListAdapter adapter = new ArrayAdapter<>(getApplicationContext(),R.layout.list_view, productlist);
final ListView lv = (ListView) findViewById(R.id.listviewproduct);
lv.setAdapter(adapter);
db.open();
final Cursor c = db.getAllRecords();
if (c.moveToFirst()) {
do {
if (c.getString(4).equals("2131492955"))
{
productlist.add("ID: " + c.getString(0) + " Artikel: " + c.getString(1));
}
} while (c.moveToNext());
}
db.close();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, AddActivity.class);
intent.putExtra(ROW_ID, id);
startActivity(intent);
}
});
Hier von meiner Eingabemaske:
Code:
public class AddActivity extends AppCompatActivity {
//Datenbank
DBAdapter db = new DBAdapter(this);
//ListView on Click
public long rowID;
public int c_id;
EditText articletxt;
public TextView counttxt;
TextView mhdtxt;
TextView discriptiontxt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_layout);
Bundle extras = getIntent().getExtras();
if (extras == null)
{
//Do nothing
}
else
{
rowID = extras.getLong(MainActivity.ROW_ID);
articletxt = (EditText)findViewById(R.id.productname);
counttxt = (TextView)findViewById(R.id.productcount);
mhdtxt = (TextView)findViewById(R.id.calender);
radio_g = (RadioGroup)findViewById(R.id.radio_g);
discriptiontxt = (TextView)findViewById(R.id.discription);
db.open();
final Cursor c = db.getAllRecords();
if (c.moveToFirst()) {
do {
c_id = c.getPosition();
if (c_id == rowID)
{
articletxt.setText(c.getString(1));
counttxt.setText(c.getString(2));
mhdtxt.setText(c.getString(3));
if (c.getString(4).equals("2131492955"))
{
radio_g.check(R.id.Gefrierschrank);
}
else if (c.getString(4).equals("2131492956"))
{
radio_g.check(R.id.Einkaufszettel);
}
else
Toast.makeText(AddActivity.this, "Fehler beim Lesen der Kategorie", Toast.LENGTH_LONG).show();
discriptiontxt.setText(c.getString(5));
}
} while (c.moveToNext());
}
db.close();
}
}
};