2012-03-08 26 views
0

我面臨的問題是屏幕從SharedPreferences獲取ID,然後我調用遠程數據庫,然後必須在屏幕上顯示該數據。安卓在屏幕上顯示來自遠程數據庫的項目

是否有可能做到這一點與ViewText或有另一種方式來放置一個遠程數據庫調用後,屏幕上的文本是由?

什麼是最好的方式做到這一點,我該如何做到這一點?

謝謝!

回答

0

邏輯會,我會使用是建立你的屏幕在XML中,有一個名爲myTextView

在活動的TextView聲明一個TextView

TextView name_field; 

String name; 
.... 
. 
. 
. 

//call my database info 
//this example get a variable and pass it into String variable name and then display it in your text view 

name_field = (TextView) findViewById(R.id.myTextView); 
name_field.setText(name); 
+0

你沒有提到,以正常的方式這樣做將完全阻止UI線程。 Tyler Treat的迴應通過在AsyncTask中異步執行來解決此問題。看看規格[這裏](http://developer.android.com/reference/android/os/AsyncTask。HTML),因爲這正是它的意思。 – 2012-03-09 20:39:41

+0

我並沒有假設這是在主線程還是在異步任務或任何地方完成的。我的回答是處理更新文本字段的問題,而沒有其他內容。 – 2012-03-10 15:52:07

2

使用您的DB調用裝載機。數據加載完成後,使用onLoadFinished將TextView添加到佈局或替換現有佈局中的文本。 我的建議是在你的佈局中創建一個TextView,以便你可以完全按照你的意願進行定位,然後在使用myTextView.setText(databasetext)替換數據庫後的文本

2

你從數據庫完全獨立於您獲取數據的方式。如果它只是需要顯示的文本,那麼TextView似乎是要使用的邏輯視圖元素。

簡單來說,你應該採取的步驟可能會是:

  1. 獲得從SharedPreferences
  2. 與ID查詢數據庫結果
  3. ID結果傳遞到您的視圖層
  4. 使用TextView來顯示結果

這是最好的(並且自4.0 )在與UI線程分開的線程中進行網絡調用。最好的方法可能是使用AsyncTask。例如:

private class GetDbItemTask extends AsyncTask<Integer, Void, MyDbItem> { 

    protected MyDbItem doInBackground(Integer... ids) { 
     return mDbService.load(ids[0]); 
    } 

    protected void onPostExecute(MyDbItem result) { 
     mTextView.setText(result.toString()); 
    } 
} 
1

你試過一個自定義警告對話框this link

這使您可以在屏幕上顯示文本視圖而無需更改活動。

我希望我正確地回答了這一點,因爲你問

「是否有可能做到這一點與ViewText或有另一種方式在屏幕上 地方文本遠程數據庫調用時後?」。

然後在活動生命週期中使用onResume()刷新屏幕。