重写SimpleAdapter 里的getView()代码如下public View getView(int position, View convertView, ViewGroup parent) {
//  View v= super.getView(position, convertView, parent);


if(convertView == null){
holder = new ViewHolder();
convertView = mInflater.inflate(layoutID, null);


holder.btn_0 = (Button) convertView.findViewById(R.id.jcViewBtnOdds_3);
holder.btn_1 = (Button) convertView.findViewById(R.id.jcViewBtnOdds_1);
holder.btn_2 = (Button) convertView.findViewById(R.id.jcViewBtnOdds_0);


convertView.setTag(holder);


}else{
holder = (ViewHolder) convertView.getTag();
}

holder.btn_0.setText((String) list.get(position).get("odds0"));
holder.btn_1.setText((String) list.get(position).get("odds1"));
holder.btn_2.setText((String) list.get(position).get("odds2"));


ind = (String) list.get(position).get("title");

convertView.setId(position);
System.out.println(position + "    ===   position         " + ind);

 addListener(convertView,position);  
 return convertView;  
}

// int index;

private void addListener(View convertView,final int position) {
holder.btn_0.setOnClickListener(
new View.OnClickListener() { 

 @Override  
 public void onClick(View v) {
 if(FBallData.boolButton[position][0]){ //记录选中
 FBallData.boolButton[position][0] = false;
 holder.btn_0.setBackgroundResource(R.drawable.p1);
 }else{
 FBallData.boolButton[position][0] = true; 
 holder.btn_0.setBackgroundResource(R.drawable.p2);
 }
 
 }
}); 
}

解决方案 »

  1.   

    ListView内的convertView是会重用的,当你滚动时,最上方不显示的convertView会重用到下方,所以你要理好这个逻辑,设置对正确的Button的事件。
      

  2.   

    这要怎么办? 怎么样可以对正确的Button 我是每次点击都是当前显示的最后一个变。
      

  3.   

    ListView内的convertView是会重用的,当你滚动时,最上方不显示的convertView会重用到下方,所以你要理好这个逻辑,设置对正确的Button的事件。