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

我自己用SimpleAdapter来做适配器可是无法运行

错误信息:Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
            at com.example.SpinnerTest.MyActivity.getdata(MyActivity.java:55)
            at com.example.SpinnerTest.MyActivity.onCreate(MyActivity.java:36)
package com.example.SpinnerTest;

import android.app.Activity;
import android.os.Bundle;
import android.text.AndroidCharacter;
import android.view.View;
import android.widget.*;

import java.util.*;

public class MyActivity extends Activity implements AdapterView.OnItemSelectedListener {
    /**
     * Called when the activity is first created.
     */
    private TextView T1;
    private Spinner S1;
    //private List<String> L1;
    private String[] L1 = {"北京", "上海", "成都", "广州"};
    //private ArrayAdapter<String> A1;
    private SimpleAdapter s2;
    private List<Map<String,Object>> list;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        T1 = (TextView) findViewById(R.id.TextView);
        S1 = (Spinner) findViewById(R.id.spinner);
        //1.设置数据源
        //L1 = new ArrayList<String>();
        // L1.add("北京");L1.add("上海");L1.add("成都");L1.add("广州");
        //2.设置一个适配器

        //  A1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,L1);
        s2 = new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.imageView, R.id.textView});
        list = new ArrayList<Map<String, Object>>();
        //3.适配器设置一个下拉列表样式
        s2.setDropDownViewResource(R.layout.item);
        //4.Spinner加载适配器
        S1.setAdapter(s2);
        //5.Spinner设置监听器
        S1.setOnItemSelectedListener(this);


    }

    private List<Map<String,Object>> getdata()
    {
        for (int i = 0;i < L1.length;i++)
        {
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("pic",R.drawable.ic_launcher);
            map.put("text","陶融" + i);
            list.add(map);
        }
        return list;
    }
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
    {
        String cityname = (String)s2.getItem(position);
        T1.setText("您选择的城市是:" + cityname);


    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}


正在回答

1 回答

 s2 = new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.imageView, R.id.textView});

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

你把你的这个list初始化放在 s2 = new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic", "text"}, new int[]{R.id.imageView, R.id.textView});  前面  前面调用了getdata()方法!!你调用方法前先初始化!  试试

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

晨心 提问者

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

举报

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

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

进入课程

我自己用SimpleAdapter来做适配器可是无法运行

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