我有一个listView,它显示数据库中的记录,setOnClickListener()用于从列表中提取文本的项目,并添加String作为Intent的额外内容。
一切正常,我的列表显示带有文本的记录,例如City,Town,Village,当我添加新项目时,这也可以正常工作。我的问题在于,当我使用toast来显示传递给intent的字符串时,会添加一些额外的Chars
e.g。我点击列表项“城镇”,吐司显示“{pg = town}”如何阻止这种情况发生/为什么会发生?
Adapter和onClick的代码如下。
提前致谢。
public void listChange() {
Cursor c = database.rawQuery("select * from Towns", null);
c.moveToFirst();
primeTownlist = new ArrayList<HashMap<String, String>>();
while (!c.isAfterLast()) {
primeTownMap = new HashMap<String, String>();
primeTownMap.put("pg", c.getString(1));
primeTownlist.add(primeTownMap);
c.moveToNext();
}
c.close();
primeGoalAdapter = new SimpleAdapter(this, primeTownlist, R.layout.primeTowns,
new String[] { "pg" }, new int[] {R.id.bt_primeTown});
primeTowns.setAdapter(primeTownAdapter);
}
primeTowns.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
String title = list.getItemAtPosition(position).toString();
Intent i = new Intent("com.example.towns.town");
i.putExtra("town", title);
startActivity(i);
Toast.makeText(getApplicationContext(),
(title), Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:0)
那是因为你的列表是HashMap的列表。试试
String title = ((HashMap<String,String>) list.getItemAtPosition(position)).get("pg");