2012-02-06 11 views
0

ループを使用してdbクエリから12個のチェックボックスのテキストを設定しようとしています。配列の値に "add1"を代入して、それぞれを12の代わりにループしたいと思います。どのようにこれを行うための任意のアイデア?ここでAndroid App- setTextプロシージャのループを使用してEditTextを埋め込む

は私が修正しようとしているコードです:

add1Text= (CheckBox) findViewById(R.id.add1); 
if (cursor.getString(cursor.getColumnIndex("add1")) == null) { 
    add1Text.setVisibility(View.GONE); 
} 
else { 
    add1Text.setText(cursor.getString(cursor.getColumnIndex("add1"))); 
} 

答えて

1

ご注意:以下のすべてが、私は今それをテストすることはできません、私の頭の上からです。私はチャンスを取った後にそれをテストします。

私はそれがこのようなものだ仮定しています...あなたは、各チェックボックスに関連付ける列を追跡する必要があると思う:

コラム:ADD1 =>チェックボックス:add1Text カラム:ADD2を=>チェックボックス:add2Text など。

この状況では、可能であればアレイ内で手動で追跡する必要があります。あなたが使うことができるペアクラスを作ることをお勧めします。私は今、このポスト[A Java collection of value pairs? (tuples?)]

public class Pair<L,R> { 

    private final L left; 
    private final R right; 

    public Pair(L left, R right) { 
    this.left = left; 
    this.right = right; 
    } 

    public L getLeft() { return left; } 
    public R getRight() { return right; } 

    @Override 
    public int hashCode() { return left.hashCode()^right.hashCode(); } 

    @Override 
    public boolean equals(Object o) { 
    if (o == null) return false; 
    if (!(o instanceof Pair)) return false; 
    Pair pairo = (Pair) o; 
    return this.left.equals(pairo.getLeft()) && 
      this.right.equals(pairo.getRight()); 
    } 

} 

からクラスを変更しましたが、あなたが望むのペアを含むリストを作成する必要があります(または類似の)でしょう。

List<Pair<CheckBox, String>> list = new ArrayList<Pair<CheckBox, String>>; 
list.add(new Pair<CheckBox, String>((CheckBox) findViewById(R.id.add1), "add1"); 
list.add(new Pair<CheckBox, String>((CheckBox) findViewById(R.id.add2), "add2"); 
list.add(new Pair<CheckBox, String>((CheckBox) findViewById(R.id.add3), "add3"); 

などなど

は、その後、あなたは

foreach (Pair<CheckBox, String> item in list) 
{ 
    if (cursor.getString(cursor.getColumnIndex(item.getLeft()) == null) 
    { 
     item.getRight().setVisibility(View.GONE); 
    } 
    else 
    { 
     item.getRight().setText(cursor.getString(cursor.getColumnIndex(item.getLeft())); 
    } 
} 
+0

はもう少しコンパクトに何かを期待していました。同様に: 'code' for(int i = 0; i

+0

もう一度やり直す方法を検討しますが、列の配列を格納する必要があります(もし私が考えている別の方法がうまくいくなら)。 – joshhendo

+0

既にカラム名とチェックボックス名として使用します。 –

0

がそれを手に入れたようなものを使用してリストを繰り返し処理することができます!私はオブジェクトを扱っていたことを忘れて、3番目の配列が必要であることに気付きました。ここに私が思いついたのがあります。

  • CLISTは、列名
  • フィールド・リストが含まれています(この場合はチェックボックスで)オブジェクト
  • PLISTは、私がレイアウトから選択していたオブジェクトの名前ですされています。

    Object fList[]={add1Text,add2Text,add3Text}; 
    int pList[]={R.id.add1,R.id.add2,R.id.add3}; 
    cList = cursor.getColumnNames(); 
    
    for (int i =0; i < fList.length; i++){ 
        fList[i] = (CheckBox) findViewById(pList[i]); 
        if (cursor.getString(cursor.getColumnIndex(cList[i])) == null) { 
         ((TextView) fList[i]).setVisibility(View.GONE); 
        } 
        else { 
         ((TextView) fList[i]).setText(cList[i] + " - " + cursor.getString(cursor.getColumnIndex(cList[i]))); 
        } 
    } 
    

(列名 - 値)にあるチェックボックスのテキストを設定します

関連する問題