安卓listView 和BaseAdapter的问题

为什么我只点击了前面几项,往下滑动,checkbox下面却自动点击了,而且TextView也只有部分数据显示到当前屏幕,往下滑动时,却重复之前的数据?

图片说明
public class MainActivity extends AppCompatActivity {
ListView listView;
List studentList = new ArrayList();

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listv);
    listView.setAdapter(new MyAdapter());
    Student student;
   for (int i=0;i<30;i++){
       student = new Student("Tom"+i,10+i);

       studentList.add(student);
   }
}
class MyAdapter extends BaseAdapter{

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

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final Student student = studentList.get(position);
        View view = null;
        if (convertView ==null){
            view = View.inflate(MainActivity.this,R.layout.checkbox_layout,null);

        }else{
            view = convertView;

        }
                final CheckBox checkBox1 = (CheckBox) view.findViewById(R.id.cb1);
                final TextView textView = (TextView) view.findViewById(R.id.textinfo);
        //textView.setText(student.toString());

        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        if (isChecked){
                            textView.setText(student.toString());
                        }
                    }
                });

        return view;
    }
}

}

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1021/1815.html

你应该把CheckBox是否选中保存一个变量的

下面的复用了上面的convertView,最好是在getView中写好默认的状态、