为了账号安全,请及时绑定邮箱和手机立即绑定

出现两套一样的图标,点击另外一套图标会崩溃

如图所示,我跟着视频敲的代码,但发现出现了两套图标。

http://img1.sycdn.imooc.com//5667c4a700017f9b03160481.jpg

上面这套图标可以正常演示,但一旦点击下面这套重复的图标的话,程序崩溃。

查看Logcat知道是数组越界,但没有很好的办法解决问题,我比对过视频的代码并没有什么不一样的地方。

以下是我的代码,请问各位前辈,是哪里出现了问题了吗?

package com.example.gridviewdemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener{
	
	private GridView gview;
	private List<Map<String,Object>>datalist;
	private SimpleAdapter adapter;
	private int[] icon = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
			  R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
			  R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
	private String[] iconName = { "联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声", "设置","语音", "天气", "浏览器", "Youtube" };

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		gview=(GridView) findViewById(R.id.gridview);
		
		datalist = new ArrayList<Map<String,Object>>();
		getData();
		adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"image","text"},new int[]{R.id.image,R.id.text});
		gview.setAdapter(adapter);
		gview.setOnItemClickListener(this);
		
	}
	private List<Map<String,Object>> getData() {
		
		for(int i = 0;i<iconName.length;i++){
			Map<String,Object>map = new HashMap<String,Object>();
			map.put("image", icon[i]);
			map.put("text", iconName[i]);
			datalist.add(map);
		}
		return datalist;
	}
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "我是"+iconName[position], Toast.LENGTH_SHORT).show();
	}
}

正在回答

1 回答

    getData();  去掉40行这 代码 就OK 了

0 回复 有任何疑惑可以回复我~
#1

WJC_景超 提问者

谢谢回答!刚才按照你的方法来改,没出现问题了。可以再回答一下为什么去掉这行代码就好了呢?
2015-12-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第1季)
  • 参与学习       111140    人
  • 解答问题       1560    个

本课程由浅入深地带您学会Android的常用控件的开发和使用

进入课程

出现两套一样的图标,点击另外一套图标会崩溃

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号