在HashMap Android中获得价值

时间:2012-05-21 13:59:56

标签: android

我有两项活动...... 活动1:有一个edittext和两个按钮:button1& BUTTON2 活动2:拥有autocompletetextview和listview

我希望当我输入字符串到edittext并单击button1时,我创建一个HashMap(静态)来保存值(设置defaul =“hello word”)并在edittext中键入字符串... 单击button1时的事件:

button.setOnClickListener(new OnClickListener() {       
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
  hashMap.put(edittext.getText().toString(),"hello word");//I declared hashMap  
}
});

在activity2中:

public class Notification_App extends Activity {

    AutoCompleteTextView actv_notification;
    ListView lv_notification;
    Dictionary1 dictionary1;
    ArrayList<String> str_value;
    ArrayList<String> array_key;

@Override
public void onCreate(Bundle circle)
{
    super.onCreate(circle);
    setContentView(R.layout.notification);

    actv_notification=(AutoCompleteTextView)findViewById(R.id.actv_notification);
    lv_notification=(ListView)findViewById(R.id.listview_notification);

    array_key=new ArrayList<String>(dictionary1.hashMap.keySet());
    Iterator myVeryOwnIterator = dictionary1.hashMap.keySet().iterator();
    while(myVeryOwnIterator.hasNext())
    {
        String key=(String)myVeryOwnIterator.next();
        String value=(String)dictionary1.hashMap.get(key);
        str_value.add(value);
    }

    ArrayAdapter<String> adapter=new ArrayAdapter<String>(Notification_App.this, android.R.layout.simple_dropdown_item_1line,array_key);
    ArrayAdapter<String> adapter1=new ArrayAdapter<String>(Notification_App.this, android.R.layout.simple_list_item_1,array_key);


    actv_notification.setAdapter(adapter);
    lv_notification.setAdapter(adapter1);
    lv_notification.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {
    // TODO Auto-generated method stub
    Toast.makeText(getBaseContext(), str_value.get(position), Toast.LENGTH_LONG).show();
    }
    });     
}

但是错误显示:行处的空指针: str_value.add(value); ...你能帮帮我..

3 个答案:

答案 0 :(得分:2)

我想你忘了初始化str_value变量。放在while循环之前:

str_value = new ArrayList<String>();

它应该可以解决问题。

P.S。我没有检查代码的逻辑,只是指出为什么会得到NullPointerException

答案 1 :(得分:0)

您收到例外情况,因为str_valuenull

您需要创建实际对象:

    str_value = new ArrayList<String>();

答案 2 :(得分:0)

尝试添加

str_value = new ArrayList<String>();

在第一次之前

str_value.add(value);