2016-03-25 23 views
-1

Android'le çalışmaya başlıyorum ve bu derse bir içerik listesiyle sahip oldum. Her bileşen için bir onay kutusu ve bir ekle düğmesi vardır. Bu verileri yerel bir veritabanına aktarmak istiyorum ancak nasıl gidileceğinden emin değilim. Veritabanı yardımcı sınıfına ihtiyacım var mı? Lütfen bana bir kod örneği veya onclick yöntemimde bunu nasıl uygulayacağınız verin. Aşağıdaki Benim kod ...Veritabanına veri eklemek Android

Tab2Activity.java

public class Tab2Activity extends Fragment { 

public ArrayList<String> shoppingList; 
public ArrayList<CheckBox> checkboxes; 

// kamu CheckBox cb olduğu;

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.tab_two, container, false); 

    shoppingList = new ArrayList<String>(); 
    checkboxes = new ArrayList<CheckBox>(); 

    LinearLayout l = (LinearLayout)inflater.inflate(R.layout.tab_two, container, false); 
    // RelativeLayout s = (RelativeLayout)inflater.inflate(R.layout.tab_two, container, false); 
    // RelativeLayout r = (RelativeLayout)s.findViewById(R.layout.text); 

    Bundle b = getArguments(); 
    String ingredientsString = b.getString("ingredients"); 

    System.out.println("string: " + ingredientsString); 
    String[] ingredients = ingredientsString.split(","); 

    System.out.println("size: " + ingredients.length); 

    ScrollView sv = new ScrollView(getActivity()); 
    LinearLayout ll = new LinearLayout(getActivity()); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    sv.addView(ll); 

    for(int i = 0; i <ingredients.length; i++) { 
     final CheckBox cb = new CheckBox(getActivity()); 
     cb.setText(ingredients[i]); 
     cb.setTag("checkbox" + i); 
     cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        buttonView.getTag(); 
        shoppingList.add(cb.getText().toString()); 
        System.out.println("ADDING: " + cb.getText().toString()); 
       } else { 
        shoppingList.remove(cb.getText().toString()); 
        System.out.println("REMOVING: " + cb.getText().toString()); 
       } 

      } 
     }); 
     ll.addView(cb); 
    } 
    Button button = new Button(getActivity()); 
    button.setText("Add to list"); 
    button.setPadding(0, 10, 0, 10); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String list = ""; 

      for (int x=0; x<shoppingList.size(); x++) 
       list += shoppingList.get(x) + "\n"; 

      new AlertDialog.Builder(getActivity()) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .setTitle("Save List") 
        .setMessage("Add following items to list?\n\n" + list) 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 

        }) 
        .setNegativeButton("No", null) 
        .show(); 

     } 
    }); 
    ll.addView(button); 
    l.addView(sv); 
    return l; 

    // return v; 
} 

}

GÜNCELLEME: Ben ... Bir veritabanı sınıfı yaptık siz doğru yolda olduğumu sanıyorsun?

public class DBhelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "Ingredients_DB"; 
private static final int DATABASE_VERSION = 2; 
private static final String TABLE_NAME = "INGREDIENTS"; 
public static final String Col_1 = "TITLE"; 

public DBhelper(Context context) { 

    super(context, DATABASE_NAME, null, 2); 
    SQLiteDatabase db = this.getWritableDatabase(); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table" + TABLE_NAME + "(TITLE STRING PRIMARY KEY AUTOINCREMENT, TITLE TEXT"); 
} 

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

public boolean insertData(String Title) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(Col_1, Title); 
    long result = db.insert(TABLE_NAME, null, contentValues); 

    if(result == -1){ 
     return false; 
    } 
    else 
     return true; 
} 

}

+0

Şimdiye kadar ne denediniz? –

+0

Veritabanı sınıfımı yukarıda tuttum. Sence doğru yolda mıyım? – user3548867

cevap

0

options birkaç vardır. Yerel veritabanında depolamak en iyi yol olabilir veya olmayabilir. Her iki durumda da, resmi belgeler aşağıdaki seçeneklerden herhangi birini nasıl kullanabileceğiniz konusunda size yol gösterebilir:

  • Paylaşılan Tercihler - Özel ilkel verileri anahtar/değer çiftlerinde depolar.
  • Dahili Depolama - Özel verileri cihaz belleğinde saklayın.
  • Harici Depolama - Ortak verileri paylaşılan harici depolama biriminde saklayın.
  • SQLite Veritabanları - Yapılandırılmış verileri özel bir veritabanında depolar.
  • Ağ Bağlantısı - Web üzerindeki verileri kendi ağ sunucunuzla birlikte saklayın.

Durumunuza en uygun olanın nasıl uygulanacağını öğrenmek için Android documentation "Storage Options"'a bakın.

İlgili konular