Android 从资源填充GridView时出现问题
我试图用膨胀视图填充Android GridView,视图有ImageView和TextView,这是从数据的ArrayList填充的 Fverything很好,但是,当我滚动网格时,我的前7项正在重复Android 从资源填充GridView时出现问题,android,gridview,bufferedinputstream,Android,Gridview,Bufferedinputstream,我试图用膨胀视图填充Android GridView,视图有ImageView和TextView,这是从数据的ArrayList填充的 Fverything很好,但是,当我滚动网格时,我的前7项正在重复 namCont.setAdapter(new ImageAdapter(getApplicationContext())); 我的代码: public class ImageAdapter extends BaseAdapter { private Context mContext;
namCont.setAdapter(new ImageAdapter(getApplicationContext()));
我的代码:
public class ImageAdapter extends BaseAdapter
{
private Context mContext;
public ImageAdapter(Context c)
{
mContext = c;
}
public int getCount()
{
return kat.namirnice.size();
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
View view;
ImageView imageView = null;
if (convertView == null)
{
view = LayoutInflater.from(mContext).inflate(R.layout.nam_item,null);
try
{
TextView textView = (TextView)view.findViewById(R.id.tekst);
imageView = (ImageView)view.findViewById(R.id.slika);
textView.setText(kat.namirnice.get(position).naziv);
Log.i(TAG, "\n position: " + position);
buf = new BufferedInputStream((assetManager.open("images/" + activKat_int + "/" + position + ".png")));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
Drawable d = new BitmapDrawable(bitmap);
imageView.setImageDrawable(d);
buf.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
view = convertView;
}
return view;
}
ListView中的视图被回收。所以最终,我猜当你到达位置8时,它会循环它的第一个视图,在你的代码中,block view=convertView;您所做的只是返回现有的回收视图 相反,你需要这样做
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.nam_item,
null);
}
try {
TextView textView = (TextView) convertView.findViewById(R.id.tekst);
ImageView imageView = (ImageView) convertView.findViewById(R.id.slika);
textView.setText(kat.namirnice.get(position).naziv);
Log.i(TAG, "\n position: " + position);
buf = new BufferedInputStream((assetManager.open("images/"
+ activKat_int + "/" + position + ".png")));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
Drawable d = new BitmapDrawable(bitmap);
imageView.setImageDrawable(d);
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
return convertView;
}
ListView中的视图被回收。所以最终,我猜当你到达位置8时,它会循环它的第一个视图,在你的代码中,block view=convertView;您所做的只是返回现有的回收视图 相反,你需要这样做
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.nam_item,
null);
}
try {
TextView textView = (TextView) convertView.findViewById(R.id.tekst);
ImageView imageView = (ImageView) convertView.findViewById(R.id.slika);
textView.setText(kat.namirnice.get(position).naziv);
Log.i(TAG, "\n position: " + position);
buf = new BufferedInputStream((assetManager.open("images/"
+ activKat_int + "/" + position + ".png")));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
Drawable d = new BitmapDrawable(bitmap);
imageView.setImageDrawable(d);
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
return convertView;
}