Android:将数据库中的值传递给常量/变量

时间:2011-10-11 18:04:23

标签: android database variables

我好像是从数据库中为列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,而不是我想要的列标题的实际值。谁能告诉我我错过了什么?

2 个答案:

答案 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”然后你显示那个。您错过了获取所需文本的步骤。