2011-10-11 36 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」,那麼你的顯示。你錯過了獲取你想要的實際文本的步驟。