この写真を参照してください:
私はアンドロイドで数独をデザインしていて、このようなレイアウトをしているので、81Editextがあります。Editextのすべての値を取得したいので、アクティビティで81ビューを宣言および管理するのは困難です。問題を処理するのに効果的な方法を教えてください。
この写真を参照してください:
私はアンドロイドで数独をデザインしていて、このようなレイアウトをしているので、81Editextがあります。Editextのすべての値を取得したいので、アクティビティで81ビューを宣言および管理するのは困難です。問題を処理するのに効果的な方法を教えてください。
編集テキストを動的に作成します。
すべての反復で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
グリッドビューでエディットテキストを取得するには、使用する必要があると思います。
このような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配列に保存します。本当に知りたいことの残りをコーディングする方法を知っていると思います。コメントしてください。残りを投稿します。ありがとうございます。これがお役に立てば幸いです。
この方法で試すことができます:
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);
お役に立てば幸いです。