Android 在适配器中的ImageView上设置标记并记住这些标记
大家好,我的社区 假设我有一个函数setTags(),它提供适配器标记的ImageView,如下代码所示:Android 在适配器中的ImageView上设置标记并记住这些标记,android,gridview,imageview,adapter,Android,Gridview,Imageview,Adapter,大家好,我的社区 假设我有一个函数setTags(),它提供适配器标记的ImageView,如下代码所示: public class ImageAdapter extends BaseAdapter { private ArrayList<Bitmap> crops; private Context mContext; public ImageAdapter(Context c, ArrayList<Bitmap> crops) { mContext = c;
public class ImageAdapter extends BaseAdapter {
private ArrayList<Bitmap> crops;
private Context mContext;
public ImageAdapter(Context c, ArrayList<Bitmap> crops) {
mContext = c;
this.crops = crops;
setTags();
}
public int getCount() {
return crops.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(crops.get(position));
return imageView;
}
public void setTags(){
for(int i = 0; i<getCount();i++){
ImageView img = new ImageView(mContext);
img.setImageBitmap(crops.get(i));
img.setTag(i);
img = null;
}
}
公共类ImageAdapter扩展了BaseAdapter{
私营种植园作物;
私有上下文;
公共ImageAdapter(上下文c、ArrayList){
mContext=c;
这个。农作物=农作物;
setTags();
}
public int getCount(){
返回作物。大小();
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
//为适配器引用的每个项目创建新的ImageView
公共视图getView(int位置、视图转换视图、视图组父视图){
图像视图图像视图;
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(85,85));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
}否则{
imageView=(imageView)convertView;
}
setImageBitmap(crops.get(position));
返回图像视图;
}
公共void setTags(){
对于(int i=0;i标记将不会保留,您将它们设置为新创建的ImageView
s(然后为空),而不是getView
中的ImageView
s
也
您可以在setTags()
方法中为位图设置标记,然后在getView
imageView.setTag(getItem().getTag());
中设置标记,但正如我看到的,您只是将position
设置为标记,因此您可以严格地imageView.setTag(position);
所以在getView
imageView.setImageBitmap(getItem(position));
imageView.setTag(position);
请注意,当您使用setOnItemClickListener
时,您将在回调方法中获得普通位置(如下所示)(或者您可能出于其他目的需要它们…)
@覆盖
public void onItemClick(适配器视图适配器、视图、,
内部位置,长id){
}
imageView.setImageBitmap(getItem(position));
imageView.setTag(position);
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int position, long id) {
}