2016-04-10 6 views
0

Так что я пытаюсь добавить элементы в ListView каждый раз, когда пользователи нажимают кнопку SAVE на Dialog. Я думаю, что я сделал все правильно, кроме кодирования onClickListener для этого SAVE Button.ListView из базы данных SQLite

Я был бы очень признателен, если бы кто-то мог мне помочь.

Вот моя строка макета:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:background="#cccccc" 
     > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Ime predmeta" 
      android:layout_gravity="center" 
      android:layout_marginLeft="15dp" 
      android:textSize="20sp" 
      android:textColor="#424242" 
      android:id="@+id/textViewRowListaPredmetiImePredmeta"/> 

    </LinearLayout> 

Helper базы данных Класс:

public class PredmetiDodajDBHelper extends SQLiteOpenHelper{ 

    public static final int DATABASSE_VERSION = 3; 
    public static final String DATABASE_NAME = "dodaj_predmet.db"; 
    public static final String TABLE_NAME = "predmeti"; 
    public static final String COLUMN_ID = "_id"; 
    public static final String COLUMN_IMEPREDMETA = "imepredmeta"; 


    public PredmetiDodajDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
     super(context, DATABASE_NAME, factory, DATABASSE_VERSION); 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String query = "CREATE TABLE " + TABLE_NAME + "(" + 
       COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       COLUMN_IMEPREDMETA + " TEXT NOT NULL " + 
       ");"; 
     db.execSQL(query); 

    } 



    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 

    } 

} 

dataoperation класс

public class dataoperation { 

    SQLiteDatabase database_ob; 
    PredmetiDodajDBHelper openHelper_ob; 
    Context context; 


    public dataoperation(Context c) { 
     // TODO Auto-generated constructor stub 

     context=c; 

    } 

    public dataoperation opnToRead() { 
     openHelper_ob = new PredmetiDodajDBHelper(context, 
       openHelper_ob.DATABASE_NAME, null, openHelper_ob.DATABASSE_VERSION); 
     database_ob = openHelper_ob.getReadableDatabase(); 
     return this; 

    } 

    public dataoperation opnToWrite() { 
     openHelper_ob = new PredmetiDodajDBHelper(context, 
       openHelper_ob.DATABASE_NAME, null, openHelper_ob.DATABASSE_VERSION); 
     database_ob = openHelper_ob.getWritableDatabase(); 
     return this; 

    } 

    public void Close() { 
     database_ob.close(); 
    } 

    public long insertData(String fname) { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(openHelper_ob.COLUMN_IMEPREDMETA, fname); 
     opnToWrite(); 
     long val = database_ob.insert(openHelper_ob.TABLE_NAME, null, 
       contentValues); 
     Close(); 
     return val; 

    } 

    public Cursor readdata() { 
     String[] cols = { openHelper_ob.COLUMN_ID, openHelper_ob.COLUMN_IMEPREDMETA }; 
     opnToWrite(); 
     @SuppressWarnings("static-access") 
     Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols, null, 
       null, null, null, null); 

     return c; 

    } 
    public Cursor queryAll(int nameId) { 
     String[] cols = { openHelper_ob.COLUMN_ID, openHelper_ob.COLUMN_IMEPREDMETA}; 
     opnToWrite(); 
     Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols, 
       openHelper_ob.COLUMN_ID + "=" + nameId, null, null, null, null); 

     return c; 

    } 
} 

И часть кода от деятельности, которая содержит Dialog и ListView:

editTextDodajPredmetImePredmeta = (EditText)dialog. findViewById(R.id.editTextDodajPredmetImePredmeta); 
        buttonSpremiPredmet = (Button)dialog. findViewById(R.id.buttonSpremiPredmet); 
        imePredmeta = editTextDodajPredmetImePredmeta.getText().toString(); 


        lv=(ListView)findViewById(R.id.lista_predmeti); 
        //bt=(Button)findViewById(R.id.buttonSpremiPredmet); 
        adapter_ob = new dataoperation(Ocijene.this); 

        String[] from = { PredmetiDodajDBHelper.COLUMN_IMEPREDMETA }; 
        int[] to = { R.id.editTextDodajPredmetImePredmeta }; 
        cursor = adapter_ob.readdata(); 
        SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(Ocijene.this, 
          R.layout.row_lista_predmeti, cursor, from, to); 
        lv.setAdapter(cursorAdapter); 

        buttonSpremiPredmet.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          lv.addView(editTextDodajPredmetImePredmeta); 


         } 
        }); 

Это EditText и все, что вещи были в этом XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="26dp" 
    android:paddingRight="26dp" 
    android:paddingTop="15dp" 
    android:paddingBottom="25dp"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="@string/dialog_predmeti_ime_predmeta" 
     android:layout_marginBottom="5dp" 
     android:id="@+id/textView5" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editTextDodajPredmetImePredmeta" 
     android:layout_marginBottom="15dp"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="@string/dialog_predmeti_vrsta_ispita" 
     android:layout_marginBottom="5dp" 
     android:id="@+id/textView6" /> 

    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinnerPredmetiLayoutDialogDodajVrsteIspita" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Save" 
     android:id="@+id/buttonSpremiPredmet" /> 

</LinearLayout> 

Я думаю, что lv.addView(editTextDodajPredmetImePredmeta); вызывает проблему, но с тем, что я должен заменить его?

Спасибо и извините за весь кучу кода!

ответ

0

Так что ваша цель состоит в том, чтобы сохранить данные в базу данных и добавить то же самое Listview, вы можете вызвать метод вставки вы написали и вызвать уведомят набор данных изменен метод после того, как он

+0

Нет, это не rrecognize, когда я попробуйте назвать это – DaxHR

+0

Что значит у не распознать? можете ли вы поместить код того, что вы пробовали? – nlogn

+0

Ну, я пробовал как этот String noviPredmet = editTextDodajPredmetImePredmeta.getText(). ToString(); adapter_ob.insertData (noviPredmet); cursorAdapter.notifyDataSetChanged(); но он просто не работает – DaxHR