0

textView.setText は、リスト内のすべての項目を同じものとして設定します。ArrayList からすべての要素のリストを作成するにはどうすればよいですか? どういうわけか位置を指定する必要がありますか?

public class CustomAdapter extends BaseAdapter {

     private Context ctx;
     private ArrayList<String> children;

     CustomAdapter (ArrayList<String> data, Context context, String log) { 
         this.ctx = context;
         this.children = data;
     }

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

          LayoutInflater inflator = (LayoutInflater)ctx.getSystemService(LAYOUT_INFLATER_SERVICE);
          View v = inflator.inflate(R.layout.text_list, null);

          TextView textView = (TextView) v.findViewById(R.id.logText);
          System.out.println("Cyan");
          textView.setTextColor(Color.CYAN);
          System.out.println("LOG SIZE: " + log.size());

          for(int i = 0; i < children.size(); i++){
              textView.setText(children.get(i));
          }
          return textView;
     }

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

    @Override
    public Object getItem(int position) {

        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    } 
 }

}

4

1 に答える 1

3

getView()使用するアイテムの位置を渡す各行に対して呼び出されます。行ごとにすべての子を反復処理しています。つまり、TextViewテキストを複数回設定し、最後の子のテキストに到達しています。メソッドは次のようになります。

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

    if(convertView == null)
    {
        LayoutInflater inflator = (LayoutInflater)ctx.getSystemService(LAYOUT_INFLATER_SERVICE);
        convertView = inflator.inflate(R.layout.text_list, null);
    }

    TextView textView = (TextView)convertView.findViewById(R.id.logText);
    System.out.println("Cyan");
    textView.setTextColor(Color.CYAN);
    System.out.println("LOG SIZE: " + log.size());
    textView.setText(children.get(position));

    return convertView;
}
于 2013-06-07T15:14:42.513 に答える