2013-04-08 3 views
0

получения ошибки компиляции для «CheckBoxInfo» переменного в коде ниже, правильно пока я получаю сообщение об ошибке,получения ошибки компиляции для переменного по методе ArrayAdapter, Android

listview = (ListView) findViewById(R.id.listView); 
    myAdapter = new MyAdapter(this, R.layout.row_layout, CheckBoxInfo); 
    listview.setAdapter(myAdapter); 

из документов говорится: " объекты для представления в Listview ", однако CheckBoxInfo IS - объекты, которые будут представлены в списке. что здесь не так?

остальная часть кода:

общественный класс MainActivity расширяет активность {

CheckBoxInfo cbr; 
private ListAdapter MyAdapter; 
ListView listview; 
MyAdapter myAdapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    cbr = new CheckBoxInfo(); 
    cbr.checkBoxName = "dfdjklfjdkljf"; 
    cbr.checkBoxState = true; 

    listview = (ListView) findViewById(R.id.listView); 
    myAdapter = new MyAdapter(this, R.layout.row_layout, CheckBoxInfo); 
    listview.setAdapter(myAdapter); 

} 

public class MyAdapter extends ArrayAdapter<CheckBoxInfo> { 

    private List<CheckBoxInfo> checkBoxList; 
    private Context context; 

    public MyAdapter(List<CheckBoxInfo> infoList, Context context) { 
     super(context, R.layout.row_layout, infoList); 
     this.checkBoxList = infoList; 
     this.context = context; 

     for(int i = 0; i <=12; i++){ 
      checkBoxList.add(cbr); 
     } 

    } 

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

     // First let's verify the convertView is not null 
     if (convertView == null) { 
      // This a new view we inflate the new layout 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.row_layout, parent, false); 
     } 
      // Now we can fill the layout with the right values 
      TextView tv = (TextView) convertView.findViewById(R.id.textView1); 
      CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox1); 
      CheckBoxInfo cbi = checkBoxList.get(position); 

      tv.setText(cbi.checkBoxName); 

     return convertView; 
    } 

} // end MyAdapter 

}

другой класс, представляющий объекты для заполнения ListView:

public class CheckBoxInfo { 
Boolean checkBoxState; 
String checkBoxName; 

public CheckBoxInfo(){ 
    checkBoxState = false; 
    checkBoxName = ""; 
} 

}

+1

возможно дубликат [как я поставил ListView в ArrayAdapter, Android] (http://stackoverflow.com/questions/15874049/how-do-i-set-the-listview-to-the-arrayadapter-android) –

+0

Какая ошибка компиляции, которую вы получаете? –

+0

Получение не может быть разрешено переменной – Kevik

ответ

1

ошибка в аргументах, которые Вы передаете в конструктор

 listview = (ListView) findViewById(R.id.listView); 
     List<CheckBoxInfo> ls = new ArrayList<CheckBoxInfo>(); 
     ls.add(cbr); 
     myAdapter = new MyAdapter(ls, this); 
     listview.setAdapter(myAdapter); 

И переопределения функции ToString в классе CheckBoxInfo

public String toString(){ 
    return "Name : " + checkBoxName + " , Checked : " + checkBoxState; 
} 
1

Вы должны передать список элементов CheckBoxInfo в конструкторе ArrayAdapter.

ArrayList<CheckBoxInfo> items = new ArrayList<CheckBoxInfo>(); 
// add elements to the list 
(...) 
myAdapter = new MyAdapter(this, R.layout.row_layout, items); 
0

См конструктор myAdapter класса, имеющий только 2 argument.and в своем коде вы вызываете конструктор с 3-мя аргументами.

Смежные вопросы