2016-03-25 8 views
-1

私はAndroidで始まり、このクラスに成分のリストを持っています。各成分のチェックボックスと追加ボタンがあります。私はこのデータをローカルのデータベースに転送したいが、それについてどうやって行くのかは分からない。データベースヘルパークラスが必要ですか?コードの例や、onclickメソッドでこれを実装する方法を教えてください。以下は、私のコード...データベースにデータを追加するAndroid

Tab2Activity.java

public class Tab2Activity extends Fragment { 

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

//パブリックのCheckBox CBです。

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; 
} 

}

UPDATE:私は...データベースクラスを作っていますが、私は正しい軌道に乗っていますと思いますか?

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

これまでに何を試しましたか? –

+0

上記のデータベースクラスを作成しました。私は正しい方向にいると思いますか? – user3548867

答えて

0

optionsいくつかあります。それをローカルデータベースに格納するのが最善の方法かもしれません。どちらの方法でも、公式ドキュメントは、以下のオプションの使用方法をガイドすることができます。

  • 共有プリファレンス - プライベートプリミティブデータをキーと値のペアで格納します。
  • 内部ストレージ - プライベートデータをデバイスメモリに格納します。
  • 外部ストレージ - パブリックデータを共有外部ストレージに保存します。
  • SQLiteデータベース - 構造化データをプライベートデータベースに格納します。
  • ネットワーク接続 - 独自のネットワークサーバーを使用してWeb上にデータを保存します。

あなたの状況に最も適した方法を実装する方法については、Android documentation "Storage Options"を参照してください。

関連する問題