Playground

AndroidにおけるEditTextをListViewで作ったときにEditViewの値が取れない問題

Playground
この記事は約4分で読めます。
スポンサーリンク

久しぶりにAndroidアプリをつくっています

Pythonでががーって作ることが多いこの頃ですが久しぶりにUIがあるものが作りたくなりました

ListViewの中にEditViewを入れ、ボタン遷移等でListViewの中にあるEditViewの中身が欲しいとなったときに取り出せず悩みました

色々調査したらできたので解決方法のメモしておきます

 

簡単に説明するとEditViewにて値を入れ終わったときに呼ばれる関数にListViewの更新をかけるようすると入ります

MainActivity.javaでもいけると思いますが、ListViewの処理はListViewでしてほしいためAdapter内に記述しました

プログラム(重要じゃない箇所は端折ります)

public class MyAdapter extends BaseAdapter {
    Context context;
    LayoutInflater layoutInflater = null;
    ArrayList<MyItem> nounList;

    public MyAdapter(Context context) {
        this.context = context;
        this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void setNounList(ArrayList<MyItem> nounList) {
        this.nounList = nounList;
    }

    @Override
    public int getCount() {
        return nounList.size();
    }

    @Override
    public Object getItem(int position) {
        return nounList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return nounList.get(position).getId();
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        convertView = layoutInflater.inflate(R.layout.mylistitem,parent,false);

        //ココ重要
        ((EditText)convertView.findViewById(R.id.noun_text)).addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
            //EditTexitが編集し終わったときに呼ばれる関数
            @Override
            public void afterTextChanged(Editable s) {
                //editのなかにこれいれないと更新されない
                nounList.get(position).setNoun(String.valueOf(s));
            }
        });

       
        return convertView;
    }

}

これでListView内にあるEditViewが更新されるようになりました

 

スポンサーリンク

参考文献

 

コメント

タイトルとURLをコピーしました