динамически добавлять текстовое представление в макет - PullRequest
1 голос
/ 23 августа 2011

Я искал это здесь, но не могу найти правильный источник / ответ для этого.

Я хочу получить данные из моей базы данных 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 ]

3 голосов
/ 23 августа 2011

Вы использовали

DBAdapter DB = new DBAdapter(this);

Строка перед Activity инициируется.Так что это ключевое слово вызывает исключение нулевого указателя. Пожалуйста, напишите эту строку в методе onCreate() перед db.open();

Добавление динамически:

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 голос
/ 23 августа 2011

То, что вы ищете, это ListView .Чтобы заполнить данные из БД в список, используйте SimpleCursorAdapter

1 голос
/ 23 августа 2011

Вы можете использовать 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).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...