

listViewのアイテムが10個スクリーンに表示されていて、11個目がスクリーン外にあるとします。11個すべてのデータを取得したいのですが、11個目のデータへの参照の取り方がわかりません。  
以下のコードを実行すると11個目の参照を得ようとしたときにnull pointer exceptionがでてしまいます。

[code]

    public void saveData() {
        StringBuffer buffer = new StringBuffer();
        int count = listView.getCount();
        for (int i = 0; i < count; i++) {
            View child = listView.getChildAt(i);
            TextView setText1 = (TextView) child.findViewById(R.id.TextView1);
            EditText text = (EditText) child.findViewById(R.id.setText1);
            String content1 = setText1.getText().toString().trim();
            String content2 = text.getText().toString().trim();
            buffer.append(content1);
            buffer.append(",");
            buffer.append(content2);
            buffer.append(",");
        }
    }
    
[/code]

* * *
[code]

    public class CustomAdapter extends ArrayAdapter<String> {
    
        public CustomAdapter(Context context, List<String> num_set) {
            super(context, R.layout.custom_row, num_set);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = LayoutInflater.from(getContext());
            View CustomView = inflater.inflate(R.layout.custom_row, parent, false);
    
    
            String[] num = getItem(position).split(",");
            TextView setText1 = (TextView) CustomView.findViewById(R.id.TextView1);
            EditText setText2 = (EditText) CustomView.findViewById(R.id.setText2);
    
            setText1.setText(num[0]);
            setText2.setText(num[1]);
            return CustomView;
        }
    }
    
[/code]


CC BY-SA 3.0
2016-05-13T11:46:38.963
24825
2016-05-14T03:32:39.777
2016-05-14T03:31:36.003
5337
15484
question
android
android Listviewのスクリーン外のアイテムへの参照を取得する方法


`ListView`からデータを取得するのではなく、`Adapter`からデータを取得しましょう。ここでは`CustomAdapter`を使用していると仮定します。

[code]

    public void saveData() {
        StringBuffer buffer = new StringBuffer();
    
        CustomAdapter adapter = (CustomAdapter)listView.getAdapter();
        for(int i = 0, length = adapter.getCount(); i < length; i++) {
            String[] rowData = adapter.getItem(i).split(",");
            buffer.append(String.format("%s,%s,", rowData[0].trim(), rowData[1].trim()));
        }
    }
    
[/code]


CC BY-SA 3.0
2016-05-14T03:32:39.777
24843
2016-05-14T03:32:39.777
5337
24825
answer