2016-10-23 10 views
0

2つのテーブル(プロジェクトとアルファベラ)を持つデータベースにデータを挿入するアプリケーションがある 2番目のテーブルの挿入方法は、最初のテーブルの取得方法によって異なります。 (1または2)を再開しました。Android - カーソルが正常に動作しない

これは、カーソルで2番目のテーブルを調べるために作成した方法です。見つかった場合は、alvara_dbクラスのセッターに設定されます。後で、私はゲッターを使って別のアクティビティのテキストビューに関する情報を表示します。問題は、情報を設定していないことです。私のカーソルで何か間違っていますか?

ありがとうございます!私はgetAlvarasメソッドを呼び出し

public ArrayList<alvara_db> getAlvaras(){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    ArrayList<alvara_db> projects = new ArrayList<>(); 
    String[] project = new String[]{String.valueOf(tipoprojetoid)}; 

    Cursor cur = db.rawQuery("SELECT placa, proj_exec, resp_tec, rtnum, parecer FROM alvara WHERE projetoid = ?", project); 
    cur.moveToFirst(); 

    alvara_db alvaras = new alvara_db(); 
    alvaras.setPlaca(cur.getInt(cur.getColumnIndex("placa"))); 
    alvaras.setProj_exec(cur.getInt(cur.getColumnIndex("proj_exec"))); 
    alvaras.setResp_tec(cur.getString(cur.getColumnIndex("resp_tec"))); 
    alvaras.setRtnum(cur.getInt(cur.getColumnIndex("rtnum"))); 
    alvaras.setParecer(cur.getString(cur.getColumnIndex("parecer"))); 
    projects.add(alvaras); 

    return projects; 
} 

フラグメント:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.detalhes_projeto_alvara); 
    db.getAlvaras(); 

    placa = alvaras.getPlaca(); 
    resp_tec = alvaras.getResp_tec(); 
    proj_exec = alvaras.getProj_exec(); 
    rtnum = alvaras.getRtnum(); 
} 

答えて

0

あなたがdb.getAlvaras()から返された値を使用していません。

代わりに、2番目のスニペットの変数alvarasは、初期化されていない可能性があります。投稿したコードに正確には表示されません。

(また、クエリが行に一致しない場合には moveToFirst()の戻り値をチェックし、 do追加したいかもしれません - 複数の行を取得するための whileループを。)うん

+0

を1 - @Iaalto。そんなこと知ってる。私は、単にデータベースからフェッチされた情報を設定するだけで、私はtextviewsでそれを得ることができると思った。 2 - onCreateの直前で初期化されます。投稿してくれないのは残念です。私は、必ずしも1つの行しか返さないので、必要ではないと思います。 – HextechEnthusiast

+0

@Iaalto返された値の使い方に関するいくつかの方向を知ることができますか? – HextechEnthusiast

+0

'ArrayList alvarasList = db.getAlvaras();' – laalto

関連する問題