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

求大神帮我检查一下。我写这个代码运行不了

ActivityListView.java
package com.example.arrayadpterdemo;

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

import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.app.Activity;

public class MainActivity extends Activity {
	ListView listView;
	List<Map<String, Object>> data;

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

		listView = (ListView) findViewById(R.id.listView);
		/*
		 * 
		 * //新建一个适配器,并添加数据源 String[] data =
		 * {"Items1","Items2","Items3","Items4"}; ArrayAdapter<String>
		 * arr_Adpter = new ArrayAdapter<String>(this,
		 * android.R.layout.simple_expandable_list_item_1, data); //视图加载适配器
		 * listView.setAdapter(arr_Adpter);
		 */
		//新建适配器+加载数据源
		List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();		
		SimpleAdapter sp_Adapter = new SimpleAdapter(this, getData(),
				R.layout.alayout, new String[] { "pic", "word" },
				new int[] { R.id.pic, R.id.word });
		//视图加载适配器
		listView.setAdapter(sp_Adapter);
	}
	
	//获取数据源
	private List<Map<String, Object>> getData() {
		for (int i = 0; i < 10; i++) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("pic", R.drawable.ic_launcher);
			map.put("word", "123");
			data.add(map);
		}
		return data;
	}

}



alaout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/pic"
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:id="@+id/word"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="Android Robot"
        android:textSize="20sp" 
        />

</LinearLayout>


activity_listview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

http://img1.sycdn.imooc.com//57e3534e00010ae309150414.jpg

正在回答

4 回答

data是成员变量,你在oncreate()方法里面又重新写了个data,相当于一个局部变量,在获取数据源的方法中添加数据到data(全局变量的data),但是你全局的data并没有初始化,而且数据距适配器中的data并没有数据。建议你将oncreate()方法中List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();改为data = new ArrayList<Map<String, Object>>();

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

qq_生活在别处_0 提问者

非常感谢!
2016-11-03 回复 有任何疑惑可以回复我~

你getdata()方法是模拟假数据的  后面一个换成map.put("word"+i);

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

你定义在onCreate外的data并没有new,而onCreate里创建的这个data根本没使用。

求采纳!

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

那异常贴出来啊

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

qq_生活在别处_0 提问者

logcat?里面怎么什么都没有
2016-09-22 回复 有任何疑惑可以回复我~
#2

qq_生活在别处_0 提问者

我重新启动eclipse试试
2016-09-22 回复 有任何疑惑可以回复我~
#3

掘坑自埋 回复 qq_生活在别处_0 提问者

你先把程序注释掉留标签,先看能不能显示出来吧
2016-09-22 回复 有任何疑惑可以回复我~
#4

qq_生活在别处_0 提问者 回复 掘坑自埋

异常贴出来了
2016-09-22 回复 有任何疑惑可以回复我~
#5

qq_生活在别处_0 提问者 回复 掘坑自埋

我知道哪里错了,不应该在onCreate方法里面定义data,应该直接在构造Adtpter之前定义data,这里的之前不是代码之前。而是运行之前。也就是把声明放在方法外面。
2016-09-22 回复 有任何疑惑可以回复我~
查看2条回复

举报

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

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

进入课程

求大神帮我检查一下。我写这个代码运行不了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信