我好像是从数据库中为列id#返回一个值,但是我想要我已定义的列的实际文本值。
我有一个定义为ID_COLUMN_TITLE的字符串,这是我尝试将列的值传递给字符串的地方。:
public final static String ID_COLUMN_TITLE = "com.pocketbeta.COLUMN_TITLE";
COLUMN_TITLE值由数据库填充在不同的代码片段中:
public static final String COLUMN_TITLE = "route_name";
接下来,我设置适配器和监听器,并将其传递给活动:
private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i=new Intent(SmithRockNameDatabase.this, DatabaseChoice.class);
i.putExtra(ID_COLUMN_TITLE, String.valueOf(id));
startActivity(i);
}
};
然后新活动显示结果:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.databasechoice);
passedVar=getIntent().getStringExtra(SmithRockNameDatabase.ID_COLUMN_TITLE);
passedView=(TextView)findViewById(R.id.passed);
passedView.setText(passedVar);
}
一切正常,只显示列ID,而不是我想要的列标题的实际值。谁能告诉我我错过了什么?
答案 0 :(得分:0)
快速而肮脏的解决方案是从视图中抓取文本:
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent i=new Intent(SmithRockNameDatabase.this, DatabaseChoice.class);
// I use R.id.txtTitle here but you probably have something similar
TextView txtTitle = (TextView)view.findViewByid(R.id.txtTitle);
if(txtTitle!=null)i.putExtra(ID_COLUMN_TITLE, txtTitle.getText());
startActivity(i);
}
严格地说,虽然您应该使用新活动中的ID来查询与该ID相关的数据,但您可以访问记录中的所有字段。
答案 1 :(得分:0)
你所做的一切都应该有效。
你这样做:
i.putExtra(ID_COLUMN_TITLE, String.valueOf(id));
将int转换为字符串,以便在下一个活动中将文本设置为此int。
我认为你希望做更多的事情:
String value = (view.findViewById(R.id.text1)).getText();
i.putExtra(ID_COLUMN_TITLE, String.valueOf(id));
我不太确定你想要获得什么文本,但基本答案是将int转换为字符串。所以4 =“4”然后你显示那个。您错过了获取所需文本的步骤。