2011-08-23 144 views
1

我一直在尋找這附近,但我似乎無法找到正確的來源/答案。動態添加textview到佈局

我想從我的SQLite數據庫中提取數據,並根據我在數據庫中的元素數量在佈局(使用TextViews)中顯示它。

如何將TextViews添加到「即時」佈局? hardcoding textviews是非常簡單的,但我不知道如何動態。 感謝您的幫助!

這裏是我的類:

package android.GUI; 


public class Shifts extends Activity implements OnClickListener { 

String dbTime; 

DBAdapter DB = new DBAdapter(this); 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.shifts); 

    LinearLayout layout = (LinearLayout) findViewById(R.id.shifts); 
    TextView text = new TextView(this); 

    DB.open(); 
    Cursor c = DB.getAllShifts(); 
    if (c.moveToFirst()) { 
     do { 

     } while (c.moveToNext()); 
     layout.addView(text); 
     text.setText(showDB(c)); 

    } 

    DB.close(); 

} 

public String showDB(Cursor c) { 
    dbTime = c.getString(1) + "\n" + c.getString(2); 

    return dbTime; 
} 

回答

3

您已經使用

DBAdapter DB = new DBAdapter(this); 

Activity之前啓動。所以這個關鍵字是導致空指針exception.Please db.open();

動態添加之前寫的方法onCreate()這一行:

TextView tv = new TextView(this); 
tv.setText("TaskID"); 
TextView tv1 = new TextView(this); 
task = new EditText(this); 
task.setMaxWidth(100); 
task.setMinHeight(100); 
tv1.setText("Task"); 
id = new EditText(this); 
id.setMaxHeight(10); 
TextView tv2 = new TextView(this); 
name = new EditText(this); 

name.setMaxHeight(1); 
tv2.setText("Name"); 


LinearLayout l = new LinearLayout(this); 
l.setOrientation(LinearLayout.VERTICAL); 
l.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
setContentView(l); 

l.addView(tv); 
l.addView(id); 
l.addView(tv1); 
l.addView(task); 
l.addView(tv2); 
+1

謝謝你,我已經將這一行移至onCreate方法,但仍然崩潰。有什麼建議麼? – Yosi199

+0

用更新的代碼更新你的問題 – Rasel

1

您可以使用ListView和SimpleCursorAdapter,它會自動爲你的數據庫記錄創造的景色。 http://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/

或者,如果你還是想自己來管理它,你可以使用下列內容:

// In onCreate method. 
// E.g. your topmost view is LinearLayour with id 'layout'. 
LinearLayout layout = findViewById(R.id.layout); 
TextView text = new TextView(this); 
text.setText("Hello, I'm dynamically added text view"); 
layout.addView(text). 
+0

您好,感謝您的幫助。我試過這樣做,但我的活動崩潰。你能看看我的代碼,並指出我錯在哪裏,爲什麼我錯了? – Yosi199