1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. IIIGeorgeIII, 11.01.2018 #1
    IIIGeorgeIII

    IIIGeorgeIII Threadstarter Neuer Benutzer

    Guten Tag,

    Ich habe ein Problem mit meinem Cursor, soweit klappt alles aber sobald ich was aus der Database entferne, bekomme ich folgenden Fehler:

    android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

    hat vielleicht einer eine Idee ?

    Code:
    public class DisplayContact extends ActionBarActivity {
        int from_Where_I_Am_Coming = 0;
        private DBHelper dbmanager ;
    
        TextView name ;
        TextView phone;
        TextView email;
        TextView street;
        TextView place;
        int id_To_Update = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_contact);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbardisplaypkw);
            setSupportActionBar(toolbar);
    
    
            name = (TextView) findViewById(R.id.editTextName);
            phone = (TextView) findViewById(R.id.editTextPhone);
            email = (TextView) findViewById(R.id.editTextStreet);
            street = (TextView) findViewById(R.id.editTextEmail);
            place = (TextView) findViewById(R.id.editTextCity);
    
            dbmanager = new DBHelper(this);
    
            Bundle extras = getIntent().getExtras();
            if(extras != null   ) {
                int Value = extras.getInt("_id");
    
                if(Value>0) {
                    //means this is the view part not the add contact part.
                    Cursor rs = dbmanager.getData(Value);
                    id_To_Update = Value;
    
                        rs.moveToFirst();
    
                        String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));
                        String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));
                        String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));
                        String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));
                        String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));
    
                        if (!rs.isClosed()) {
                            rs.close();
                        }
    
                        Button b = (Button) findViewById(R.id.button1);
                        b.setVisibility(View.INVISIBLE);
    
                        name.setText((CharSequence) nam);
                        name.setFocusable(false);
                        name.setClickable(false);
    
                        phone.setText((CharSequence) phon);
                        phone.setFocusable(false);
                        phone.setClickable(false);
    
                        email.setText((CharSequence) emai);
                        email.setFocusable(false);
                        email.setClickable(false);
    
                        street.setText((CharSequence) stree);
                        street.setFocusable(false);
                        street.setClickable(false);
    
                        place.setText((CharSequence) plac);
                        place.setFocusable(false);
                        place.setClickable(false);
                    }
    
                }
            }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            Bundle extras = getIntent().getExtras();
    
            if(extras !=null) {
                int Value = extras.getInt("_id");
                if(Value>0){
                    getMenuInflater().inflate(R.menu.display_contact, menu);
                } else{
                    getMenuInflater().inflate(R.menu.menu, menu);
                }
            }
            return true;
        }
    
        public boolean onOptionsItemSelected(MenuItem item) {
            super.onOptionsItemSelected(item);
            switch(item.getItemId()) {
                case R.id.Edit_Contact:
                    Button b = (Button)findViewById(R.id.button1);
                    b.setVisibility(View.VISIBLE);
                    name.setEnabled(true);
                    name.setFocusableInTouchMode(true);
                    name.setClickable(true);
    
                    phone.setEnabled(true);
                    phone.setFocusableInTouchMode(true);
                    phone.setClickable(true);
    
                    email.setEnabled(true);
                    email.setFocusableInTouchMode(true);
                    email.setClickable(true);
    
                    street.setEnabled(true);
                    street.setFocusableInTouchMode(true);
                    street.setClickable(true);
    
                    place.setEnabled(true);
                    place.setFocusableInTouchMode(true);
                    place.setClickable(true);
    
                    return true;
                case R.id.Delete_Contact:
    
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setMessage(R.string.deleteContact)
                            .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dbmanager.deleteContact(id_To_Update);
                                    Toast.makeText(getApplicationContext(), "Deleted Successfully",
                                            Toast.LENGTH_SHORT).show();
                                    Intent intent = new Intent(getApplicationContext(),MainActivityEigenePkw.class);
                                    startActivity(intent);
                                }
                            })
                            .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    // User cancelled the dialog
                                }
                            });
    
                    AlertDialog d = builder.create();
                    d.setTitle("Are you sure");
                    d.show();
    
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
    
            }
        }
    
        public void run(View view) {
            Bundle extras = getIntent().getExtras();
            if(extras !=null) {
                int Value = extras.getInt("_id");
                if(Value>0){
                    if(dbmanager.updateContact(id_To_Update,name.getText().toString(),
                            phone.getText().toString(), email.getText().toString(),
                            street.getText().toString(), place.getText().toString())){
                        Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(getApplicationContext(),MainActivityEigenePkw.class);
                        startActivity(intent);
                    } else{
                        Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();
                    }
                } else{
                    if(dbmanager.insertContact(name.getText().toString(), phone.getText().toString(),
                            email.getText().toString(), street.getText().toString(),
                            place.getText().toString())){
                        Toast.makeText(getApplicationContext(), "done",
                                Toast.LENGTH_SHORT).show();
                    } else{
                        Toast.makeText(getApplicationContext(), "not done",
                                Toast.LENGTH_SHORT).show();
                    }
                    Intent intent = new Intent(getApplicationContext(),MainActivityEigenePkw.class);
                    startActivity(intent);
                }
            }
        }
    }
     
  2. deek, 11.01.2018 #2
    deek

    deek Android-Experte

    Du gehst einfach munter davon aus, dass du von deinem Cursor lesen kannst nach moveToFirst(). Wenn du aber die Daten gelöscht hast in der DB dann ist halt nichts da. dann wird rs.getString failen.
    Du solltest um deine getString noch ein if(rs.isAfterLast()) machen.
    Auf den ersten Blick
     
    swa00 und IIIGeorgeIII haben sich bedankt.
  3. IIIGeorgeIII, 11.01.2018 #3
    IIIGeorgeIII

    IIIGeorgeIII Threadstarter Neuer Benutzer

    @deek
    Ja stimmt :) deshalb komme ich nicht weiter wenn er Daten gelöscht hat,
    -- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
    @deek

    Kannst du vielleicht ein Beispiel in Form eines Codes zeigen was du genau meinst? :)
     
  4. swa00, 12.01.2018 #4
    swa00

    swa00 Moderator Team-Mitglied

    a) Dein komplettes FehlerManagement an diesem Punkt fehlt. (Try/Catch ?)
    b) Das Ganze direkt im OnCreate zu machen ist schon recht mutig, an der Stelle gibt man
    der UI erst mal Luft . Tipp : Zeitverzögert (Thread) arbeiten.

    c) Wir können schlecht sagen, was dein dbmanager zurückgibt. Ich vermute :
    Code:
    Cursor rs = dbmanager.getData(Value);
    if ( rs != null) .....
    
     
    Zuletzt bearbeitet: 12.01.2018
  5. IIIGeorgeIII, 12.01.2018 #5
    IIIGeorgeIII

    IIIGeorgeIII Threadstarter Neuer Benutzer

    Ich versuche da gerade bisschen Ordnung reinzubringen :) Aber ich habe festgestellt sobald ich die Zeile oberhalb löschen in der DB dann rutscht die untere nicht hoch und somit passt es dann in der ListView nicht überein
     
  6. swa00, 12.01.2018 #6
    swa00

    swa00 Moderator Team-Mitglied

    Na ja , Dein Ansatz ansich stimmt auch nicht .
    Ich musste X Mal drüberlesen , um überhaupt zu erkennen , was das Ding eigentlich machen soll :)

    Aus welchem "dubiosen" Tutorial hast du das "kopiert" ?? :)
     
  7. IIIGeorgeIII, 12.01.2018 #7
    IIIGeorgeIII

    IIIGeorgeIII Threadstarter Neuer Benutzer

    Ja ich merke das auch langsam das es nicht so Funktioniert wie ich mir das vorstelle.

    Ich möchte gerne meiner App ermöglichen das der Benutzer seine Eigene Fahrzeuge in dir DB einfügen kann. [emoji4]
     
  8. swa00, 12.01.2018 #8
    swa00

    swa00 Moderator Team-Mitglied

    ok, bevor du an der UI rumschraubst , solltest du erst mal deinen dbmanager auf Vordermann bringen.
    (den kennen wir nicht)

    Bezogen auf dein "Aufräumen" scheint der nicht das zu sortieren , was du brauchst , und bei deinem Vorgehen
    benötigst du die richtige Reihenfolge , abgestimmt auf die Tabelleneinträge - sonst wird das eh nix.

    Dein Code ist zu statisch und berücksichtigt nicht das was da ist ( siehe auch 0 Einträge in der DB)
    Und wie schon oben erwähnt - Das komplette FehlerManagment fehlt, so wirst du nie auf einen
    grünen Zweig kommen.
     
  9. IIIGeorgeIII, 12.01.2018 #9
    IIIGeorgeIII

    IIIGeorgeIII Threadstarter Neuer Benutzer

    Okay Danke schon mal ;-)
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Fehler bei .apk Installation Android App Entwicklung 10.10.2018
Hilfestellung Appentwicklung Android App Entwicklung 29.09.2018
ListView mit eigenem Layout zeigt im Querformat Items doppelt an Android App Entwicklung 24.06.2018
Eintrag in einer Datenbank mithilfe einer ListView löschen Android App Entwicklung 20.06.2018
Fehler beim Download bestimmter Webseiten mit httpGet Android App Entwicklung 19.04.2018
webView.getScrollY() returns always 0 Android App Entwicklung 05.03.2018
Fehler bei der Kompilierung Android App Entwicklung 18.12.2017
Du betrachtest das Thema "ListView: fehler android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.