-4

複数の動的編集テキストボックスがあります..

TableLayout ll_list = (TableLayout) findViewById(R.id.tbl);
for(i=0;i < Sizedd; i++)
{
EditText ed_comm = new EditText(this);
ll_list.addView(ed_comm);
}

その値をハッシュマップに保存する方法は?

4

1 に答える 1

2

できることは、作成した EditText ごとに Tag を設定し、Text Watcher を使用してそのデータを保存することです。私はこれが苦手です。ただし、それに応じてスニペットを変更してみてください。

最初に HashMap をグローバルに宣言し、

public  HashMap<Integer,String> myList=new HashMap<Integer,String>();

TableLayout ll_list = (TableLayout) findViewById(R.id.tbl);
for(i=0;i < Sizedd; i++)
{
EditText ed_comm = new EditText(this);
ed_comm.setTag(i); // By this you have set an Tag to the editText and hence you can find out which editText it is, in the TextWatcher implementation. 
ll_list.addView(ed_comm);

ed_comm.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable s) {
                    Log.i("After  Text","Called");
                     myList.put(ed_comm.getTag(),s.toString().trim());
                }
            });
}

それでおしまい。値を hashMap に保存しました。この TextWatcher は、EditText に入力するすべてのテキストに対して呼び出されます。したがって、ハッシュマップはいつでも更新されます。

Hashmap からデータを取得するには、次のようにします。

Iterator i = myList.iterator();
            while (i.hasNext()) {
                    System.out.println(i.next());
            }
于 2012-05-16T07:36:13.077 に答える