2013-06-27 31 views
0

我的代码发生了一些奇怪的事情我不知道它为什么发生。在我的XML文件,我把一个复选框和图像视图,但在我的课somethings发生错误复选框和图像视图得到颠倒我投的imageview来自复选框的ID和复选框来自图像视图的id,当我施放imageview在我的xml中的imageview的ID相同与复选框它有错误。 这里是我的xml创建自定义网格视图有些不可思议

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="5dp" > 

<CheckBox 
    android:id="@+id/cbo_CheckImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="5px" /> 

<ImageView 
    android:id="@+id/img_thumbImage" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_marginRight="10px" /> 

</LinearLayout> 

这里是我的类

public class ImageAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public ImageAdapter() { 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     return count; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = mInflater.inflate(
        R.layout.gallery, null); 

      //LOOK AT HERE I DON'T KNOW WHY IT'S HAPPENING BUT IT WORKS. BUT WHEN I SWITCH THE IMAGEVIEW CAST TO THE ID OF MY IMAGEVIEW IN MY XML FILE IT GOT ERROR 
      holder.imageview = (ImageView) convertView.findViewById(R.id.cbo_CheckImage); 
      holder.checkbox = (CheckBox) convertView.findViewById(R.id.img_thumbImage); 


      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.checkbox.setId(position); 
     holder.imageview.setId(position); 
     holder.checkbox.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       CheckBox cb = (CheckBox) v; 
       int id = cb.getId(); 
       if (thumbnailsselection[id]){ 
        cb.setChecked(false); 
        thumbnailsselection[id] = false; 
       } else { 
        cb.setChecked(true); 
        thumbnailsselection[id] = true; 
       } 
      } 
     }); 
     holder.imageview.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       int id = v.getId(); 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_VIEW); 
       intent.setDataAndType(Uri.parse("file://" + arrPath[id]), "image/*"); 
       startActivity(intent); 
      } 
     }); 
     holder.imageview.setImageBitmap(thumbnails[position]); 
     holder.checkbox.setChecked(thumbnailsselection[position]); 
     holder.id = position; 
     return convertView; 
    } 
} 
class ViewHolder { 
    CheckBox checkbox; 
    ImageView imageview; 

    int id; 
} 
+0

你试图手动删除生成的R文件,做一个项目,然后''clean' rebuild'? – chancea

回答

0

在你的代码
holder.imageview =(ImageView的)convertView.findViewById(R.id.cbo_CheckImage); holder.checkbox =(CheckBox)convertView.findViewById(R.id.img_thumbImage);

这样,请改变像

holder.imageview =(ImageView的)convertView.findViewById(R.id.img_thumbImage); holder.checkbox =(CheckBox)convertView.findViewById(R.id.cbo_CheckImage);

它的工作

这是有益的,你ggive我1+

+0

我已经这样做了。这里的东西是我的代码没有错误我想知道为什么我的代码运行,即使我投我的复选框和复选框到我的图像视图..当我做你的建议代码它给了我一个错误。 – NewDroidDev

+0

replace holder.checkbox.setId(position); int id = cb.getId(); holder.checkbox.setTag(position); int id = cb.getTag(); –