ListView und SQLite

  • 0 Antworten
  • Letztes Antwortdatum
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:
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();
        }
    }
    };
 
Zurück
Oben Unten