2013-04-08 50 views
1

我從sqlite獲取數據(imagepaths),所以我用simplecursoradaptergridview中顯示圖像。在每個gridview項目中,它包含一個imageview和一個複選框,如下面的代碼所示。在這裏,我的第一個問題是,每當gridview滾動時,圖像似乎都會改變它們的位置,並在經過一段時間似乎很奇怪的時候在自己的位置得到解決。我認爲這些問題是由於滾動時重用視圖造成的。gridview中imageview和複選框的獨特行爲

第二個問題是當很少的checkboxes被檢查並滾動時,複選框的值被改變,即如果我檢查幾幅圖像視圖的複選框並向下滾動以選擇更多,則檢查其他checkboxes。有人可以幫助我避免這個問題嗎?

public class ImagesScreen extends Activity{ 

    public void onCreate(Bundle savedInstanceState){ 
     ....................... 

     ....................... 
      gridView.setAdapter(imagecursorAdapter); 

    } 

    } 

適配器類:

public class ImageCursorAdapter extends SimpleCursorAdapter{ 

     private int layout; 
     private LayoutInflater mLayoutInflater; 
     private Context mContext; 
     ViewHolder vh; 

     public ImageAdapter(Context context, int layout, Cursor c,String[] from, int[] to) { 
      super(context, layout, c, from, to,0); 
      this.layout = layout; 
      mLayoutInflater=LayoutInflater.from(context); 
      mContext = context; 
     } 

     public View newView(Context context, Cursor cursor, ViewGroup parent) {  
      View v = mLayoutInflater.inflate(layout, parent, false); 
      return v; 
     } 

     public void bindView(final View v, final Context context, Cursor c) { 
      final int id = c.getInt(c.getColumnIndex("id")); 
      final String imagepath = c.getString(c.getColumnIndex("paths")); 
      vh = new ViewHolder(); 

      vh.imageview = (ImageView)v.findViewById(R.id.imageView1); 
      vh.checkBox = (CheckBox)v.findViewById(R.id.checkBox1); 

      vh.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
     Log.d("ischecked",""+isChecked);        
       } 

      }); 
      File imgFile = new File(imagepath); 
      if(imgFile.exists()){ 

       Bitmap imageBitmap = decodeFile(imgFile); 
       vh.imageview.setImageBitmap(imageBitmap); 
      } 

     } 

    static class ViewHolder{ 

      public ViewHolder(){} 

      public ImageView imageview; 
      public CheckBox checkBox; 
     } 
} 
+0

請查看此:http://dj-android.blogspot.in/2013/02/android-adding-actionbar-navigation.html和http://dj-android.blogspot.in/2012/04 /milti-selection-listview-android-with.html – 2013-04-08 08:30:47

+0

@DhavalSodhaParmar是的。這裏你使用了holder.checkbox.setChecked(thumbnailsselection [position]);以確保沒有複選框混亂。但在我的情況下,我需要添加該代碼,因爲我使用SimpleCursorAdapter?請建議。 – Apparatus 2013-04-08 08:42:57

回答

1

結帳這個link

它爲我工作。 它可以幫助你2。