0

私の質問は:- ListView のすべての EditText 値を ArrayList に格納したいです
私のアプリではCustom ListView、行としてEditText. listview20行あると考えてください。
私がこのタスクを実行しているとき、私は最初にスクロールの問題に直面しましListViewた(つまり、値EditTextが台無しになっていることを意味します。(他の場所))、しかし幸いなことにそれを解決しました。
今、すべての値を に保存したいと思いますArrayList<String>
はい、そのためのコードもアダプターに記述しましたが、そのリストを外部使用に設定すると、例外 NullPointerが発生します。また、getView
内でその ArrayList を設定したくありません (ビューのリサイクル時に問題が発生します) 。
TextWatcher Listener. また、データを保存するためのボタンはありません。値がListViewのEditTextに1つずつ表示されるので、保存したいだけです。
これが私のアダプタークラスです:-

public class MyAdapter extends ArrayAdapter<String> 
{
    private LayoutInflater mInflater;       
     public ArrayList<String> _values;
     ArrayList<String> data;
     Model model;
    public MyAdapter(Context context,int res,ArrayList<String> obj) {
        super(context,res,obj);
        mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);             
        _values=new ArrayList<String>();
        model=new Model();
        this.data=obj;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.listview, null);
            holder = new ViewHolder();               
            holder.caption = (EditText) convertView.findViewById(R.id.editText1);              
           holder.tv=(TextView)convertView.findViewById(R.id.textView1);
           holder.tv.setText(data.get(position));
        } else {
            holder = (ViewHolder) convertView.getTag();
            holder.tv.setText(data.get(position));
        }

        holder.caption.addTextChangedListener(new TextWatcher()
        {
            public void afterTextChanged(Editable edt) 
            {
                _values.add(edt.toString());
            }

            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}

            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
        });

        convertView.setTag(holder);
        holder.ref=position;
        holder.caption.setText(_values.get(position));
        model.setData(_values);//here getting exception
        return convertView;
    }
}

class ViewHolder {
    EditText caption;   
    TextView tv;
    int ref;
}

これは、その文字列に関する外部の目的で使用しているモデルクラスです

 public class Model 
 {
   ArrayList<String> data;

   public ArrayList<String> getData() {
       return data;
   }
   public void setData(ArrayList<String> data) {
    this.data = data;
    for(String str : data)
        Log.v("data=", str);
   }
}
4

1 に答える 1

0

よくわかりませんが、これがあなたの助けになるかもしれません

Arrays.sort(data);

そしてより

MyAdapter ma = new MyAdapter(<args>) 
ma.notifydatasetchanged();
<ListViewInstance>.setAdapter(ma);
于 2013-02-11T13:29:14.287 に答える