0

このコードを使用して、リストビューでedittextの値を取得しています。

     View view = listview.getChildAt(position);
     EditText text = (EditText)view.findViewById(R.id.myEditBox);
     String contents = text.getText().toString();

しかし、問題は、リストビューをスクロールすると、位置が変わり、異なる結果が得られることです。つまり、スクロールすると、5番目の位置の要素が一番上になり、その位置が0になります。そのための解決策はありますか?

4

1 に答える 1

0

まだ作成していない場合は、リストビュー用のアダプターを作成する必要があります。アダプターでビューを設定するときに、テキストウォッチャーを追加し、テキストがアクティビティまたはフラグメントに変更されたときにレポートします。

アダプターの場合:

edittext.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) {
                    ((MyActivity) getContext()).textChanged(s.toString());

                }
            });

あなたの活動について

public void textChanged(String s){

       //do somthing with the string
}

そうすれば、編集テキストの位置を推測する必要がありません

于 2012-08-06T22:16:28.000 に答える