在HashMap Android中获取值
我有两项活动。。。 活动1:有一个编辑文本和两个按钮:按钮1和按钮2 活动2:拥有一个autocompletetextview和一个listview 我想知道,当我在edittext中输入字符串并单击按钮1时,我会创建一个HashMap(静态)来保存值(set defaul=“hello word”),并在edittext中键入字符串。。。 单击按钮1时发生的事件:在HashMap Android中获取值,android,Android,我有两项活动。。。 活动1:有一个编辑文本和两个按钮:按钮1和按钮2 活动2:拥有一个autocompletetextview和一个listview 我想知道,当我在edittext中输入字符串并单击按钮1时,我会创建一个HashMap(静态)来保存值(set defaul=“hello word”),并在edittext中键入字符串。。。 单击按钮1时发生的事件: button.setOnClickListener(new OnClickListener() { @Overrid
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
}
});
在活动2中:
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();
}
});
}
公共类通知\u应用程序扩展活动{
自动完成文本视图actv_通知;
ListView lv_通知;
词典1词典1;
ArrayList str_值;
ArrayList数组_键;
@凌驾
创建时的公共void(Bundle循环)
{
super.onCreate(循环);
setContentView(R.layout.notification);
actv_通知=(AutoCompleteTextView)findViewById(R.id.actv_通知);
lv_通知=(ListView)findViewById(R.id.ListView_通知);
array_key=newarraylist(dictionary1.hashMap.keySet());
迭代器myVeryOwnIterator=字典1.hashMap.keySet().Iterator();
while(myVeryOwnIterator.hasNext())
{
字符串键=(字符串)myVeryOwnIterator.next();
字符串值=(字符串)字典1.hashMap.get(键);
str_value.add(值);
}
ArrayAdapter=新的ArrayAdapter(通知应用程序this、android.R.layout、简单下拉列表、项目行、数组键);
ArrayAdapter adapter1=新的ArrayAdapter(通知应用程序this,android.R.layout.simple\u列表\u项\u 1,数组\u键);
actv_通知。设置适配器(适配器);
lv_通知。设置适配器(适配器1);
lv_notification.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//TODO自动生成的方法存根
Toast.makeText(getBaseContext(),str_value.get(position),Toast.LENGTH_LONG.show();
}
});
}
但是错误显示:第行的空指针:stru-value.add(value);…您能帮我吗?我想您只是忘记初始化
stru-value
变量了。请在while
循环之前放置:
str_value = new ArrayList<String>();
str_value=new ArrayList();
它应该会起作用
另外,我不是在检查代码的逻辑,只是指出为什么会出现
NullPointerException
异常,因为stru值
为null
您需要创建实际对象:
str_value = new ArrayList<String>();
str_value=new ArrayList();
尝试添加
str_value = new ArrayList<String>();
您可能希望为元素指定与声明中相同的数据类型:
new ArrayList()
而不是简单地new ArrayList()
@treeh如果您对结果满意,请接受其中一个答案。
str_value.add(value);