gpt4 book ai didi

android - 在 getView 方法中返回不正确的位置

转载 作者:搜寻专家 更新时间:2023-11-01 08:51:45 24 4
gpt4 key购买 nike

我正在使用扩展 BAseAdapter 的 CustomGridAdapter 以在 ListView 中显示数组的值。但在 CustomGridAdapter 的 getView 中,数组值的位置不在流中。

public class CustomGridAdapter extends BaseAdapter {

private Context context;
private final String[] gridValues;
private final String[] gridImage;

//Constructor to initialize values
public CustomGridAdapter(Context context, String[] gridValues, String[] gridImage) {
this.context = context;
this.gridValues = gridValues;
this.gridImage=gridImage;
}

@Override
public int getCount() {

// Number of times getView method call depends upon gridValues.length
return gridValues.length;
}

@Override
public Object getItem(int position) {

return gridValues[position];
}

@Override
public long getItemId(int position) {

return 0;
}


// Number of times getView method call depends upon gridValues.length

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

//LayoutInflator to call external grid_item.xml file

LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View gridView;

if (convertView == null) {

gridView = new View(context);

// get layout from grid_item.xml
gridView = inflater.inflate(R.layout.grid_item, null);

// set value into textview

TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
textView.setText(gridValues[position]);
Log.i(new Integer(position).toString(),gridValues[position] );
ImageView grp_icon=(ImageView)gridView.findViewById(R.id.grid_item_image);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
String path="/sdcard/Letsmeet/letsmeet_media/group_images/"+gridImage[position];
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
grp_icon.setImageBitmap(bitmap);
// set image based on selected text

ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);

String mobile = gridValues[position];



} else {
gridView = (View) convertView;
}

return gridView;
}
}

在 customGridAdapter 的 getView 方法中,位置顺序为 0,1,2,0,4 为什么我在 2 之后得到 0 而不是 3?

最佳答案

@Override
public long getItemId(int position) {

return position; //return position here
}

让你的 getView 为,

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

//LayoutInflator to call external grid_item.xml file

LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View gridView;

if (convertView == null) {

gridView = new View(context);

// get layout from grid_item.xml
gridView = inflater.inflate(R.layout.grid_item, null);

// set value into textview

TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
textView.setText(gridValues[position]);
Log.i(new Integer(position).toString(),gridValues[position] );
ImageView grp_icon=(ImageView)gridView.findViewById(R.id.grid_item_image);



} else {
gridView = (View) convertView;
}

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
String path="/sdcard/Letsmeet/letsmeet_media/group_images/"+gridImage[position];
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
grp_icon.setImageBitmap(bitmap);
// set image based on selected text

ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);

String mobile = gridValues[position];

return gridView;
}

您的 converView 仅对于屏幕上最初显示的 View 数为空。一旦你滚动它们 converView != null 并且它们被回收。所以把你的代码移到它外面。

关于android - 在 getView 方法中返回不正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22612770/

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