出现了两个问题:
①BaseAdapter被执行了九次。
②明明已经设置了setChecked(true),但是初始化的时候却没有激活!public class MainActivity extends Activity { private Button b1;

private ListView list;

private int[] to={android.R.id.text1,android.R.id.text2};

private int on_off=1,alarm=1;

private String data="sdfaffaf",time="sdfaffaf",content="sdfaffaf";

private TextView data01,data02,time01,time02,content01,content02;

private CheckedTextView check01,check02;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        System.out.println("");
        b1=(Button)findViewById(R.id.button);
        b1.setText("dianji");
        final AlertDialog.Builder bu=new AlertDialog.Builder(this);
        b1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
View v1=getLayoutInflater().inflate(R.layout.list, null);
list=(ListView)v1.findViewById(R.id.listview01);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setAdapter(new myadapter());
bu.setView(v1);
bu.show();
}
});
    }    
    class myadapter extends BaseAdapter{

private String[] strs={"是否开启","日期","时间","内容","开启闹钟"};


public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v=getLayoutInflater().inflate(R.layout.row, null);

switch (position) {
case 0:check01=(CheckedTextView)getLayoutInflater().inflate(android.R.layout.simple_list_item_multiple_choice, null);
check01.setText(strs[position]);
if(on_off==1){
System.out.println(position);
System.out.println("on_off******************"+on_off);
check01.setChecked(true);
}else{
check01.setChecked(false);
System.out.println("on_off******************"+on_off);
}
return check01;
case 1:
data01=(TextView)v.findViewById(R.id.text01);
data02=(TextView)v.findViewById(R.id.text02);
data01.setText(strs[position]);
data02.setText(data);
System.out.println(data);System.out.println(position);
return v;
case 2:
time01=(TextView)v.findViewById(R.id.text01);
time02=(TextView)v.findViewById(R.id.text02);
time01.setText(strs[position]);
time02.setText(time);
System.out.println(time);System.out.println(position);
return v;
case 3:
content01=(TextView)v.findViewById(R.id.text01);
content02=(TextView)v.findViewById(R.id.text02);
content01.setText(strs[position]);
content02.setText(content);
System.out.println(content);System.out.println(position);
return v;
case 4:
check02=(CheckedTextView)getLayoutInflater().inflate(android.R.layout.simple_list_item_multiple_choice, null);
check02.setText(strs[position]);
if(alarm==1){
System.out.println("alarm***********"+alarm);System.out.println(position);
check02.setChecked(true);
}else{
check02.setChecked(false);
System.out.println("alarm***********"+alarm);System.out.println(position);
}
return check02; }
return null;
}


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


public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}


public int getCount() {
// TODO Auto-generated method stub
return strs.length;
}
}
    
}

解决方案 »

  1.   

    你在baseadapter中可以使用viewholder,你的list的xml文件贴一下,我帮你改改。
      

  2.   

    list.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    <ListView 
    android:id="@+id/listview01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:cacheColorHint="#ffffffff"
    android:background="#ffffffff"
    >

    </ListView>
    </RelativeLayout>xml里面很简单啊、我就没贴出来