2017-01-15 12 views
0

ボタンをクリックすると、すべてのデータをbuttonに表示することはできません。私を助けてください。sqliteを使用してデータ表示ボタンを挿入して取得する方法

public class DBHelper extends SQLiteOpenHelper { 
    private static final int VERSION = 1; 
    private static final String DATABASE = "Test"; 
    private static final String TABLE_NAME = "savedata"; 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    private static final String KEY_SEX = "sex"; 


    public DBHelper(Context context) { 
     super(context, DATABASE, null,VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String sql = "CREATE TABLE IF NOT EXISTS " +TABLE_NAME + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
       + KEY_NAME + " TEXT," 
       + KEY_SEX + " TEXT)"; 
     db.execSQL(sql); 
    } 

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

    } 
    public void Insertdata(Data data){ 
     SQLiteDatabase db = getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME, data.getName()); 
     values.put(KEY_SEX, data.getSex()); 
     db.insert(TABLE_NAME, null, values); 

    } 
    public List<Data> getAllData(){ 
     List<Data> listData = new ArrayList<Data>(); 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor c = db.rawQuery("SELECT * FROM " +TABLE_NAME, null); 
     if (c.moveToFirst()){ 
      do { 
       Data data = new Data(); 
       data.setId(c.getInt(0)); 
       data.setName(c.getString(1)); 
       data.setSex(c.getString(2)); 
       listData.add(data); 

      }while (c.moveToNext()); 
     } 
     return listData; 
    } 
} 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     name = (EditText)findViewById(R.id.edit_name); 
     sex = (EditText)findViewById(R.id.edit_sex); 
     btn_get = (Button)findViewById(R.id.btn_get); 
     btn_name = (Button)findViewById(R.id.btn_name); 
     btn_sex = (Button)findViewById(R.id.btn_sex); 
     btn_id = (Button)findViewById(R.id.btn_id); 
     db = new DBHelper(this); 
     _name = name.getText().toString(); 
     _sex = sex.getText().toString(); 
     data = new Data(_name,_sex); 
     btn_save =(Button)findViewById(R.id.btn_save); 

     SaveData(); 
     getData(); 

    } 
    public void SaveData(){ 
     btn_save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try{ 
        db.Insertdata(data); 
        Toast.makeText(getApplicationContext(), "SuccessFull",Toast.LENGTH_SHORT).show(); 
       }catch (Exception e){ 
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
    } 
    public void getData(){ 
     btn_get.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        if (currentData == null){ 
         Toast.makeText(getApplicationContext(),"Null", Toast.LENGTH_SHORT).show(); 
       }else { 
         currentData = db.getAllData(); 
         btn_id.setText(String.valueOf(data.getId())); 
         btn_name.setText(data.getName()); 
         btn_sex.setText(data.getSex()); 
       } 

       }catch (Exception e){ 
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
+1

こんにちは、ようこそ。あなたは、予想された行動と実際の行動についてもう少し具体的にすることができますか?また、クラス全体をアップロードする代わりに、コードの関連部分のみを含めることを検討する必要があります。あなたの考えに従って答えを見つけやすくなります。ありがとうございました。 – QueryLars

答えて

0

あなたはひどくうんざりしています。それは私が示唆できることのすべてです。 1. AppCompatActivityを拡張し、ビューを含むクラス(たとえば "MyClass")を作成します。 2.データベース操作用のクラスDBHelperを既に作成しています。これはSQLiteOpenHelperを拡張します。 3. MyClassのonCreateメソッド内にDBHelperクラスのオブジェクトを作成し、データベースにアクセスします。 MyClassのonCreateメソッドは次のようになります。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    name = (EditText)findViewById(R.id.edit_name); 
    sex = (EditText)findViewById(R.id.edit_sex); 
    btn_get = (Button)findViewById(R.id.btn_get); 
    btn_name = (Button)findViewById(R.id.btn_name); 
    btn_sex = (Button)findViewById(R.id.btn_sex); 
    btn_id = (Button)findViewById(R.id.btn_id); 
    db = new DBHelper(this); 
    _name = name.getText().toString(); 
    _sex = sex.getText().toString(); 
    data = new Data(_name,_sex); 
    btn_save =(Button)findViewById(R.id.btn_save); 
    btn_save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try{ 
       db.Insertdata(data); 
       Toast.makeText(getApplicationContext(),  "SuccessFull",Toast.LENGTH_SHORT).show(); 
      }catch (Exception e){ 
       Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }); 

    btn_get.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       if (currentData == null){ 
        Toast.makeText(getApplicationContext(),"Null", Toast.LENGTH_SHORT).show(); 
       }else { 
        currentData = db.getAllData(); 
        btn_id.setText(String.valueOf(data.getId())); 
        btn_name.setText(data.getName()); 
        btn_sex.setText(data.getSex()); 
       } 

      }catch (Exception e){ 
       Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

これが役に立つかもしれません。

+0

ありがとう! 3つの同じクラス を作成しますが、コードを投稿してクラスとして収集した場合:D –

+0

問題は解決していますか? –

関連する問題