2016-10-12 9 views
0

私はtextviewとテキストを含むリストビューを持っています。これらの値を配列リストに追加する必要があります。私はすべての値がArraylistに追加されているわけではなく、可視のビューが追加されます。すべてのデータがarraylistに追加されるように、コードを変更する必要があります。arraylistのlistviewのすべてのedittextsデータを追加します

list = (ListView) findViewById(R.id.list); 
personList = new ArrayList<HashMap<String,String>>(); 
flags=0; 
getData(); 
placeord=(Button)findViewById(R.id.placeorder); 

placeord.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if(isNetworkConnected()) { 
      ArrayList<String> m = new ArrayList<String>(); 
      ArrayList<String> si = new ArrayList<String>(); 
      EditText q; 
      TextView sizes; 

      for (int i =0; i<= list.getLastVisiblePosition() - list.getFirstVisiblePosition(); i++) { 
       View v = list.getChildAt(i); 
       q = (EditText) v.findViewById(R.id.numberofitems); 
       sizes = (TextView) v.findViewById(R.id.size); 

       if(q.getText().toString().length()>0) { 

        si.add(sizes.getText().toString()); 
        flags=1; 

       } 
       m.add(q.getText().toString()); 
      } 

      if (flags == 0) { 
       Toast.makeText(getApplicationContext(), "please add some quantity", Toast.LENGTH_SHORT).show(); 
      } else { 
       //Toast.makeText(getApplicationContext(),val,Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(placecolor.this, placeorder2.class); 
       Bundle extras1 = new Bundle(); 
       extras1.putStringArrayList("numberofitems", m); 
       extras1.putStringArrayList("sizes", si); 
       intent.putExtras(extras1); 
       startActivity(intent); 
      } 
     } 
    } 
} 
+0

総リストビュー数がある int型のカウント= lstView.getAdapter()同様にgetCount(); –

+0

どうすれば助けになるのでしょうか... – user6704378

+0

for(int i = 0; i <= lstView.getAdapter()。getCount(); i ++) –

答えて

1

それが起こるアンドロイドリサイクルためとRecyclerviewリストビューの眺め。 EditTextのデータを追加(保存)するには、OnTextChangeListenerを実装する必要があります。これを実装することで、入力されたテキストを取得し、リスト<>の特定の位置に割り当てることができます。

例:

@Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

     final ViewHolder holder; 
     if (convertView == null) { 

      holder = new ViewHolder(); 
      LayoutInflater inflater = context.getLayoutInflater(); 
      convertView = inflater.inflate(R.layout.listview_list, null); 
      holder.textView = (TextView) convertView.findViewById(R.id.textView); 
      holder.editText = (EditText) convertView.findViewById(R.id.editText);  

      convertView.setTag(holder); 

     } else { 

      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.ref = position; 

     holder.textView.setText(arr[position].name); 
     holder.editText.setText(arr[position].nameValue); 
     holder.editText.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
        int arg3) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void afterTextChanged(Editable arg0) { 
       // TODO Auto-generated method stub 
       arr[holder.ref].nameValue = arg0.toString(); // Set value in list 
      } 
     }); 

     return convertView; 
    } 
+0

例を挙げて説明してください。 – user6704378

+0

@ user6704378この例を確認してください。 – SANAT

+0

@ user6704378この情報は役に立ちましたか? – SANAT

関連する問題