Android为我的Sqlite DB中的每个字符串创建一个TextView

时间:2013-05-24 17:21:44

标签: java android database sqlite android-sqlite

我正在尝试为光标中的每个项目显示一个新的吐司,我该怎么做?我搜索了SO,但找不到任何相关的,有用的答案。这是我的代码,但它不起作用:

 while(mNotesCursor.moveToNext()){ 
    Toast.makeText(getActivity(),  
    mNotesCursor.getString(mNotesCursor.getColumnIndex("title")),
            Toast.LENGTH_LONG).show();
    }

2 个答案:

答案 0 :(得分:3)

在迭代光标时进行烘烤不是最好的主意。原因如下:

您正在使用LENGTH_LONG,这意味着敬酒会持续约3秒钟。 而你的for循环可能会在几分之一秒内完成执行。所以吐司会按顺序显示,但是它们会过渡到如此缓慢以至于它可能没有意义。

因此,我建议您在警告对话框或活动本身中显示内容,以便用户能够更好地了解内容。

编辑:

我假设您正在主线程上执行此操作。

LinearLayout root = (LinearLayout) getActivity().findviewById(R.id.rootLayout);
    while(mNotesCursor.moveToNext()){
        TextView tv = new TextView(getActivity());
        tv.setText(mNotesCursor.getString(mNotesCursor.getColumnIndex("title")));
        root.addView(tv);
    }

答案 1 :(得分:1)

如果您希望动态地将textview添加到视图中,那么您可以按照以下方式进行操作

<?xml version="1.0" encoding="utf-8"?>
  <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout 
    android:id="@+id/lineralayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

</LinearLayout>
</ScrollView>

在您的活动类

LinearLayout l = (LinearLayout) findViewById(R.id.lineralayout1);
while(mNotesCursor.moveToNext()){ 
    TextView tv = new TextView(this);
    tv.setText(mNotesCursor.getString(mNotesCursor.getColumnIndex("title")));
l.addView(tv);
}