gpt4 book ai didi

java - 可检查的GridView

转载 作者:行者123 更新时间:2023-12-01 04:40:37 25 4
gpt4 key购买 nike

嗨,我正在扭动一个可检查的 gridView 及其工作。但不是它的预期方式(像往常一样)一切都按照我想要的方式工作,除了绘制复选框时存在延迟。

网格将变为真实,但图像不会绘制,直到我检查另一个网格。取消选中虚假陈述也是如此。

这可能是一件非常简单和愚蠢的事情,但我觉得我盯着它看有点盲目。许多坦克。

   public class CheckableImageView extends ImageView implements Checkable {


private boolean mChecked=false;

public CheckableImageView(final Context context,
final AttributeSet attrs) {
super(context, attrs);
}

@Override
public void toggle() {
setChecked(!mChecked);
Toast.makeText(getBaseContext(), "toggle "+mChecked, Toast.LENGTH_SHORT)
.show();

}

@Override
public boolean isChecked() {
Toast.makeText(getBaseContext(), "checked", Toast.LENGTH_SHORT)
.show();
return mChecked;
}

@Override
public void setChecked(final boolean checked) {
if (mChecked == checked)
return;
mChecked = checked;
refreshDrawableState();

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(mChecked) {
Bitmap check = BitmapFactory.decodeResource(
getResources(), R.drawable.cecked);
canvas.drawBitmap(check, 0,0, new Paint());

}
}

适配器///////////////////////////////////////////////////////////////////7

             public class ImageAdapter extends BaseAdapter {
private Context context;

public ImageAdapter(Context c) {
context = c;

}

@Override
public int getCount() {
// TODO Auto-generated method stub
// return randomList.size();
return 12;
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {


CheckableImageView imageView;
if (convertView == null) {
imageView = new CheckableImageView(context, null);
imageView.setLayoutParams(new GridView.LayoutParams(240, 240));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 5, 5, 5);

} else {
imageView = (CheckableImageView) convertView;


}

imageView.setImageResource(randomList.get(position));


return imageView;
}

}

OnItemClick///////////////////////////////////////////////

            @Override
public void onItemClick(AdapterView parent, View v, int position,
long id) {


cv = (CheckableImageView) v;
cv.toggle();
cv.refreshDrawableState();

}
});

最佳答案

您需要调用:

notifyDataSetChanged();

当您更改与其相关的数据或信息时,在适配器上。这将导致 Grid 失效并根据您在 Adapter 的 getView() 方法中重写的内容重新绘制。

关于java - 可检查的GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com