2012-03-25 8 views
0

Ich habe eine Listenansicht mit bearbeiten Textfelder wie soWie kann ich Daten von einem Editiertext in einer Listview in die Datenbank bringen?

http://i.stack.imgur.com/j9mxK.png

und im Grunde, was ich will ist in dem Bearbeiten von Text für das Bit tun, um in die Datenbank zu setzen. hier ist mein Code so weit

Cursor data = database.query ("Namen", Felder, null, null, null, null, null);

dataSource = new SimpleCursorAdapter(this, R.layout.row, data, fields, 
      new int[] { R.id.first, R.id.entry2 }); 

    ListView view = getListView(); 

    setListAdapter(dataSource); 

    editText1 = (EditText) findViewById(R.id.entry2); 
    editText1.requestFocus(); 
    OnKeyListener myKeyListener = new OnKeyListener() { 

     @Override 
     public boolean onKey(View arg0, int KEYCODE_ENTER, KeyEvent arg2) { 
      Log.v("Me","Something happened :: "); 
      ContentValues values = new ContentValues(); 
      values.put("last", editText1.getText().toString()); 
      database.insert("names", null, values); 
      return false; 
     } 
    }; 
    editText1.setOnKeyListener(myKeyListener); 
} 

und ich bekomme eine Null-Zeiger-Ausnahme in der letzten Zeile "editText1.setOnKeyListener (myKeyListener);" also denke ich nicht, dass es tatsächlich den Bearbeitungstext aus dem row.xml-Layout findet.

also wie mache ich es so dass ich in den bearbeitungstext in der listeansicht stopfen kann und es dann in die datenbank setzen, wenn enter getroffen wird?

Antwort

1

Sie müssen jeden Text in der Listenansicht bearbeiten. Alles, was Sie mit diesem Code tun, ist das erste Feld in die Datenbank zu setzen. Um den Rest zu erledigen, müssen Sie durch die restlichen untergeordneten Objekte der ListView "blättern", ihre Werte abrufen und sie in die Datenbank einfügen.

Ich bin nicht sicher, warum Sie dies tun möchten, obwohl. Sie zeigen Daten von irgendwo an, dann möchten Sie eine Taste drücken und alles in der Datenbank erscheinen lassen? Warum nicht direkt von der Quelle in die Datenbank verschieben? Sie können es immer noch anzeigen. Oder vielleicht vermisse ich etwas.

+0

im Grunde, was ich tun möchte, ist ein Personenname und dann in der Lage sein, in einen Wert neben es einzugeben, die dann in die Datenbank mit dem Namen gehen würde. Ich habe herausgefunden, dass es nie wirklich in die Zeile in der Listenansicht gegangen ist (es ist nur in der Kopfzeile passiert). Also meine Frage ist mehr, wie mache ich es so, wenn ich etwas in den Text in einer Listenansicht Zeile eingeben und drücken Sie die Eingabetaste tut es etwas (d. h. in die Datenbank gehen) es scheint nur über das Onkeylistener Bit zu überspringen – kennie

Verwandte Themen