0

データベースからタブとそのコンテンツを作成しました。ここで、これらのコントロールからユーザーが入力した値を取得する方法、つまりタブ上のコントロールのリストを取得する方法 (データを保存できるようにする方法) を理解する助けが必要です。これは、タブの内容をどのように入力しているかの要約されたサンプルです。

public View createTabContent(String tag)
{
SQLiteDatabase db2 = openOrCreateDatabase(msDbFile, MODE_PRIVATE, null);
Cursor cList = db2.rawQuery("SELECT * FROM CheckList WHERE CatID=" + tag, null);
TableLayout tl = new TableLayout(FormChecklist.this);
tl.setBackgroundColor(new Color().WHITE);
while(cList.moveToNext())
{   
    /* Create a new row to be added. */
    TableRow tr = new TableRow(FormChecklist.this);
    tr.setLayoutParams(new LayoutParams(
               LayoutParams.FILL_PARENT,
               LayoutParams.WRAP_CONTENT));

     /* Create the row-content. */
    TextView lblQuestion = new TextView(FormChecklist.this);
    lblQuestion.setText(cList.getString(2));
    lblQuestion.setTag(tag);
    /* Add control to row. */
    tr.addView(lblQuestion);

    CheckBox chkCompleted = new CheckBox(FormChecklist.this);
    chkCompleted.setText("Completed");
    chkCompleted.setLayoutParams(new LayoutParams(
               LayoutParams.FILL_PARENT,
               LayoutParams.WRAP_CONTENT));
    chkCompleted.setTag(tag);
    /* Add control to row. */
    tr.addView(chkCompleted);

    /* Add row to TableLayout. */
    tl.addView(tr,new TableLayout.LayoutParams(
    LayoutParams.FILL_PARENT,
    LayoutParams.WRAP_CONTENT));
}
db2.close();
return tl;
}
4

1 に答える 1

0

返信はありませんが、最終的にはわかりました。誰かがこの情報が役立つことを願っています. 私が取ったアプローチは、TableLayoutのIDを追加してcreateTabContentを変更することでした:

tl.setId(1000 + miTlCnt);

次に、保存ルーチンで、次のようにコントロールをループします。

for (int i = 1000 + miTlCnt; i > 1000; i--)
{ 
    TableLayout tl = (TableLayout)findViewById(i);
    if (tl != null)
    {
        for (int j = 0; j < tl.getChildCount(); j++)
        {
            TableRow row = (TableRow)tl.getChildAt(j);
            CheckBox chkCompleted = (CheckBox)row.getChildAt(1);
        }
    }
}
于 2012-08-15T22:23:59.777 に答える