求大神看一下程序为什么会崩掉

public class MainActivity extends Activity {


private GridView gv;

private SimpleAdapter sim_adapter;

private List<Map<String,Object>>dataList;

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

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


        dataList=new ArrayList<Map<String,Object>>();

        sim_adapter=new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img","text"}, new int[]{R.id.imageView1,R.id.textView1});

        gv.setAdapter(sim_adapter);

        

    }

    private List<Map<String,Object>> getData(){

    int[] img=new int[]{R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5};

    String[] imgName=new String[]{"图片1","图片2","图片3","图片4","图片5"};

   

    Map<String,Object>map=new HashMap<String, Object>();

    for(int i=0;i<=img.length;i++){

    map.put("img", img[i]);

    map.put("text", imgName[i]);

    dataList.add(map);

    }

    return dataList;

    }

}


皮卡丘qinqin
浏览 1408回答 7
7回答

阿旭_

去掉多余等号for(int i=0;i<=img.length;i++){替换为:for(int i=0;i<img.length;i++){

Mr_QiuL

把 new map 集合放到 for循环里,要不 你的dataList集合中所有元素都是 同一个map  也就是说 dataList.get(0),dataList.get(1)………… 里面的存储的map集合通过text,img取出的值都是一样的。这是适配器是系统的,你应该自己写一个适配器,而且系统的simpleAdapter 传入的map的值不应该为object,你运行后可能问题为类型转换异常。

JustWannaHugU

报什么错误了?

帅帅嗒先锋

每循环一次map都要清空一次,不然只会一次一次覆盖

慕粉3853642

 Map<String,Object>map=new HashMap<String, Object>();这句话放在for循环内部试试,应该就不会出现图片一样的事情了

皮卡丘qinqin

等号我已经改过来了,但是为什么五张图片以及文字 都显示的是同样的数据 都是最后一张
打开App,查看更多内容
随时随地看视频慕课网APP