Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Java 在gridview中加载的图像在滚动时更改其位置_Java_Android_Android Gridview_Lazylist - Fatal编程技术网

Java 在gridview中加载的图像在滚动时更改其位置

Java 在gridview中加载的图像在滚动时更改其位置,java,android,android-gridview,lazylist,Java,Android,Android Gridview,Lazylist,嗨,我遇到了这样的问题,当滚动图像视图改变它们的位置时。我在这个网站上看到了关于这个话题的其他答案,但没有一个对我有帮助 这是我的班级: public class MainActivity extends Activity { private GridView grid; private GridAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) {

嗨,我遇到了这样的问题,当滚动图像视图改变它们的位置时。我在这个网站上看到了关于这个话题的其他答案,但没有一个对我有帮助

这是我的班级:

public class MainActivity extends Activity {
    private GridView grid;
    private GridAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        grid = (GridView) findViewById(R.id.gridView1);

        Vector<HashMap<String, String>> vData = new Vector<HashMap<String,String>>();

        for (int i=0; i<10; i++) {
            String name = "Name "+ (i+1);
            String desc = "Description "+ (i+1);
            HashMap<String, String> hData = new HashMap<String, String>();
            hData.put("name", name);
            hData.put("desc", desc);

            vData.addElement(hData);
        }

        adapter = new GridAdapter(vData);
        grid.setAdapter(adapter);
        grid.setNumColumns(2);

        File cacheDir = StorageUtils.getCacheDirectory(this);
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
            .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
            .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
            .threadPoolSize(10) // default
            .threadPriority(Thread.NORM_PRIORITY - 1) // default
            .tasksProcessingOrder(QueueProcessingType.FIFO) // default
            .denyCacheImageMultipleSizesInMemory()
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(10 * 1024 * 1024)
            .memoryCacheSizePercentage(30) // default
            .discCache(new UnlimitedDiscCache(cacheDir)) // default
            .discCacheSize(80 * 1024 * 1024)
            .discCacheFileCount(100)
            .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
            .imageDownloader(new BaseImageDownloader(this)) // default
            .imageDecoder(new BaseImageDecoder()) // default
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
            .build();

        ImageLoader.getInstance().init(config);
    }

    //sub class
    class GridAdapter extends BaseAdapter {
        Vector<HashMap<String,String>> vData;
        GridAdapter(Vector<HashMap<String,String>> vData) {
            this.vData = vData;
        }

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

        @Override
        public Object getItem(int index) {
            // TODO Auto-generated method stub
            return vData.elementAt(index);
        }

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

        @Override
        public View getView(int index, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            HashMap<String, String> hData = vData.elementAt(index);

            View v;

            if (convertView == null) {
                LayoutInflater li = getLayoutInflater();
                v = li.inflate(R.layout.grid_element, null);
                // v = getLayoutInflater().inflate(R.layout.grid_element, parent, false);
            } else {
                v = convertView;
            }

            //TextView txtName = (TextView) v.findViewById(R.id.gridText);
            //txtName.setText(hData.get("name"));
            ImageView img = (ImageView) v.findViewById(R.id.gridImg);
            ImageLoader.getInstance().displayImage("http://www.bourax.com/android/wall"+index+".jpg", img);

            return v;
        }
    }
}
公共类MainActivity扩展活动{
私有网格视图;
专用网格适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
grid=(GridView)findViewById(R.id.gridView1);
向量vData=新向量();
对于(int i=0;i
@覆盖
公共视图getView(int索引、视图转换视图、视图组父级){
//TODO自动生成的方法存根
HashMap hData=vData.elementAt(索引);
观点五;
图像视图img;
if(convertView==null){
LayoutInflater li=getLayoutInflater();
v=li.充气(R.布局.网格元素,空);
//v=GetLayoutFlater().充气(R.layout.grid_元素,父元素,false);
img=(ImageView)v.findViewById(R.id.gridImg);
}否则{
v=转换视图;
}
//TextView txtName=(TextView)v.findViewById(R.id.gridText);
//setText(hData.get(“name”));
ImageLoader.getInstance().displayImage(“http://www.bourax.com/android/wall“+索引+”.jpg“,img);
返回v;
}
相应地更改代码…实际上,当convertView为空时,当前需要初始化所有视图才能显示在活动上…这就是为什么ImageView需要处于if状态

@Override
            public View getView(int index, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                HashMap<String, String> hData = vData.elementAt(index);

                View v;
                ImageView img;
                if(convertView == null){

                    LayoutInflater li = getLayoutInflater();
                    v = li.inflate(R.layout.grid_element, null);
                  // v = getLayoutInflater().inflate(R.layout.grid_element, parent, false);
                    img = (ImageView) v.findViewById(R.id.gridImg);
                }else{
                    v = convertView;
                }
                     //TextView txtName = (TextView) v.findViewById(R.id.gridText);
                     //txtName.setText(hData.get("name"));

                ImageLoader.getInstance().displayImage("http://www.bourax.com/android/wall"+index+".jpg", img);


                return v;
            }