2

この写真を参照してください:

私はアンドロイドで数独をデザインしていて、このようなレイアウトをしているので、81Editextがあります。Editextのすべての値を取得したいので、アクティビティで81ビューを宣言および管理するのは困難です。問題を処理するのに効果的な方法を教えてください。

4

3 に答える 3

2

編集テキストを動的に作成します。

すべての反復でed変数を書き換えているため、ループが終了edすると、最後に作成したEditTextインスタンスのみがポイントされます。

すべてのEditTextへのすべての参照を保存する必要があります。

EditText ed;
List<EditText> allEds = new ArrayList<EditText>();

for (int i = 0; i < count; i++) {   

    ed = new EditText(Activity2.this);
    allEds.add(ed);
    ed.setBackgroundResource(R.color.blackOpacity);
    ed.setId(id);   
    ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));
    linear.addView(ed);
}

これで、リストはすべてのEditTextallEdsへの参照を保持するので、それを繰り返してすべてのデータを取得できます。

データの取得

 String[] strings = new String[](allEds.size());

for(int i=0; i < allEds.size(); i++){
    string[i] = allEds.get(i).getText().toString();
}

これは設計の結果ではありませんが、いくつかの変更がある可能性があります。ただし、正確な結果を得るには、次の手順に従ってください。two for loopsグリッドビューでエディットテキストを取得するには、使用する必要があると思います。

于 2013-01-18T05:43:43.113 に答える
1

このようなEdittextの配列を使用することをお勧めします

EditText text1,text2,text3,text4,text5,text6,text7,text8,text9, text21,text22,text23,text24....text 99;
EditText[] fields={text1,text2,text3,text4,text5,text6,text7,text8,text9, text21,text22,text23,text24....text 99};
//Give your edittext ids in ids array like this
int ids[]={R.id.text1,R.id.text2,R.id.text3.....R.id,text99};
int values[9][9]={};

for(int i=0;i<fiends.length;i++)
{
fields[i]=(EditText)findViewById(ids[i]);
}

値を取得するには、同じ方法で配列を取得し、これらの値を次のように配列に保存します。forループを使用してテキストフィールドから値を取得し、values配列で宣言したように2d配列に保存します。本当に知りたいことの残りをコーディングする方法を知っていると思います。コメントしてください。残りを投稿します。ありがとうございます。これがお役に立てば幸いです。

于 2013-01-18T05:48:23.063 に答える
0

この方法で試すことができます:

public static ArrayList<EditText> m_arr_edit= = new ArrayList<EditText>();
  RelativeLayout p_rl_layout=new RelativeLayout(m_context);
  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
  LinearLayout  m_ll_timelayout = new LinearLayout(m_context);
  m_ll_timelayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    for (int i = 0; i < p_intervals; i++)
    {
        EditText m_edit = new EditText(m_context);
        m_edit.setLayoutParams(new LinearLayout.LayoutParams(90, LayoutParams.WRAP_CONTENT));
        m_edit.setText("Set Text");
        m_edit.setId(i);
        m_arr_edit.add(m_btn);
        m_ll_timelayout.addView(m_btn); 
    }
    layoutParams.addRule(RelativeLayout.BELOW);
    p_rl_layout.addView(m_ll_timelayout, layoutParams);

お役に立てば幸いです。

于 2013-01-18T05:48:28.677 に答える