onCheckedChanged中的Android设置条件已更改
我正在使用复选框将图像从库显示到自定义网格视图。 我只能选择6张图片 我有以下代码onCheckedChanged中的Android设置条件已更改,android,Android,我正在使用复选框将图像从库显示到自定义网格视图。 我只能选择6张图片 我有以下代码 public class MultiPhotoSelectActivity extends BaseActivity { private ArrayList<String> imageUrls; private DisplayImageOptions options; private ImageAdapter imageAdapter; CheckBox mCheck
public class MultiPhotoSelectActivity extends BaseActivity {
private ArrayList<String> imageUrls;
private DisplayImageOptions options;
private ImageAdapter imageAdapter;
CheckBox mCheckBox;
int pos;
ArrayList<String> selectedItems;
ArrayList<String> selectedimgs = new ArrayList<String>();
RelativeLayout rl_gallery_row,rl_gallery_async;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_image_grid);
//Bundle bundle = getIntent().getExtras();
//imageUrls = bundle.getStringArray(Extra.IMAGES);
rl_gallery_async = (RelativeLayout) findViewById(R.id.RelativeLayout_galleryas);
final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy + " DESC");
this.imageUrls = new ArrayList<String>();
for (int i = 0; i < imagecursor.getCount(); i++) {
imagecursor.moveToPosition(i);
int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
imageUrls.add(imagecursor.getString(dataColumnIndex));
System.out.println("=====> Array path => "+imageUrls.get(i));
}
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_image)
.showImageForEmptyUri(R.drawable.image_for_empty_url)
.cacheInMemory()
.cacheOnDisc()
.build();
imageAdapter = new ImageAdapter(this, imageUrls);
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(imageAdapter);
/*gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startImageGalleryActivity(position);
}
});*/
}
@Override
protected void onStop() {
imageLoader.stop();
super.onStop();
}
public void btnChoosePhotosClick(View v){
selectedItems = imageAdapter.getCheckedItems();
Toast.makeText(MultiPhotoSelectActivity.this, "Total photos selected: "+selectedItems.size(), Toast.LENGTH_SHORT).show();
Log.d(MultiPhotoSelectActivity.class.getSimpleName(), "Selected Items: " + selectedItems.toString());
}
public class ImageAdapter extends BaseAdapter {
ArrayList<String> mList;
LayoutInflater mInflater;
Context mContext;
SparseBooleanArray mSparseBooleanArray;
public ImageAdapter(Context context, ArrayList<String> imageList) {
// TODO Auto-generated constructor stub
mContext = context;
mInflater = LayoutInflater.from(mContext);
mSparseBooleanArray = new SparseBooleanArray();
mList = new ArrayList<String>();
this.mList = imageList;
}
public ArrayList<String> getCheckedItems() {
ArrayList<String> mTempArry = new ArrayList<String>();
for(int i=0;i<mList.size();i++) {
if(mSparseBooleanArray.get(i)) {
mTempArry.add(mList.get(i));
}
}
return mTempArry;
}
@Override
public int getCount() {
return imageUrls.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
pos = position;
if(convertView == null) {
convertView = mInflater.inflate(R.layout.row_multiphoto_item, null);
}
mCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox1);
final ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView1);
rl_gallery_row = (RelativeLayout) findViewById(R.id.Relativelayout_gallery_row);
imageLoader.displayImage("file://"+imageUrls.get(position), imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(Bitmap loadedImage) {
Animation anim = AnimationUtils.loadAnimation(MultiPhotoSelectActivity.this, R.anim.fade_in);
imageView.setAnimation(anim);
anim.start();
}
});
mCheckBox.setTag(position);
//mCheckBox.setId(position);
mCheckBox.setChecked(mSparseBooleanArray.get(position));
mCheckBox.setOnCheckedChangeListener(mCheckedChangeListener);
//mCheckBox.setId(position);
//holder.imageview.setId(position);
return convertView;
}
OnCheckedChangeListener mCheckedChangeListener = new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
selectedItems = imageAdapter.getCheckedItems();
if(selectedItems.size() > 5 )
{
mCheckBox.setEnabled(false); // disable checkbox
}
}
};
}
}
现在我无法在超过限制时自动取消选中复选框。。
请帮助..我认为您的条件不满足于取消选中复选框,尝试在您的条件中放置祝酒词是,祝酒词消息工作正常..我还能够获得所选图像的数量..我的问题是当超过限制时如何取消选中复选框限制这里是5在超过限制后复选框仍处于启用状态..未被禁用..设置复选框的id也未被禁用正在工作。尝试使用以下任一mCheckBox.toggle;或mCheckBox.setCheckedfalse;