2011-10-11 63 views
0

我似乎从数据库中为列id#返回一个值,但我想要我已经定义的列的实际文本值。Android:将数据库中的值传递给contsant /变量

我有定义为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

如果您在ClickListener中记录id的值,您会得到正确的输出吗? – johan

+0

您正在将valueOf(id)放入键ID_COLUMN_TITLE中。你会得到的是valueOF(id)。那是你要的吗?或者你想ID_COLUMN_TITLE? – Urban

+0

是的,我发现后,我认识到从valueOf(id)传递了id。我试图传递其中一个列条目的值。因此,例如,我试图在数据库中名为“route_name”的列中传递1个条目的值。 – Adam

回答

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的数据,然后您可以访问记录中的所有字段。

+0

这就是我想要的,我认为这是有效的。谢谢! – Adam

+0

我错过了转换为'TextView' ...我一直这样做。但现在已经修复;) – Merlin

0

你所做的一切都是按照原样工作的。

你做这行:

i.putExtra(ID_COLUMN_TITLE, String.valueOf(id)); 

这是转换一个int为字符串,以便在您下次活动的文本设置为这个中断。

我想你希望做更多的东西一样:

String value = (view.findViewById(R.id.text1)).getText(); 
    i.putExtra(ID_COLUMN_TITLE, String.valueOf(id)); 

我不太清楚你想要的文字获得,但基本的答案是你的一个int转换为字符串。所以4 =“4”,那么你的显示。你错过了获取你想要的实际文本的步骤。