Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从资源填充GridView时出现问题_Android_Gridview_Bufferedinputstream - Fatal编程技术网

Android 从资源填充GridView时出现问题

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;

我试图用膨胀视图填充Android GridView,视图有ImageView和TextView,这是从数据的ArrayList填充的

Fverything很好,但是,当我滚动网格时,我的前7项正在重复

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;
    }