【问题标题】:Format a Textview which lists all SQL table entries in Android Studio格式化一个 Textview,列出 Android Studio 中的所有 SQL 表条目
【发布时间】:2015-02-13 16:09:50
【问题描述】:

我有一段代码列出了我的表格的内容,其中包含具有各种结果的人员列表...

我能够获得显示在 Textview 中的值,如下所示:

1 鲍勃 0 0 0 0
2 蕾妮 0 0 0 0
3 杰森 0 0 0 0
4 桑迪 0 0 0 0

是否可以对其进行“样式化”以使列内容对齐? 如何设置“宽度”列?!

这是检索数据的代码...

try
    {
        db=openOrCreateDatabase("mydatabase",SQLiteDatabase.CREATE_IF_NECESSARY,null);
        Cursor c= db.rawQuery("SELECT * FROM mytable",null);

        TextView v=(TextView)findViewById(R.id.v);
        c.moveToFirst();

        String temp="";
        while(! c.isAfterLast()) {
            String s1=c.getString(0);
            String s2=c.getString(1);
            String s3=c.getString(2);
            String s4=c.getString(3);
            String s5=c.getString(4);
            String s6=c.getString(5);
            temp=temp+"\n"+s1+"\t"+s2;
            c.moveToNext();
        }
        v.setText(temp);

    }
    catch(SQLiteException e)
    {

    }

}

... 并将其放在以下 Textview 中:

<TextView
    android:id="@+id/v"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
   />

好的,非常感谢您!

【问题讨论】:

  • 在单个 TextView 中确实没有什么好的方法可以做到这一点。您可能最好使用某种 TableLayout,或者使用结构更好的行来实现 ListView 以显示数据。您还应该在 for 循环中使用 StringBuilder 而不是使用字符串连接,并在完成后关闭光标。

标签: android sqlite android-studio


【解决方案1】:

你可以做两件事。在 TextView 上使用 android:paddingandroid:margin 之类的属性将文本放置在页面上您希望的位置。然后,您还可以在一行中的每个值之间使用制表符分隔文本中的“列”。

String s1 = c.getString(0);
s1 = s1.replaceAll("\\s","\t");

这样,尽管它们的长度,它们都将共享一行的起始位置(当然,除非一个字符串超过了制表符的长度,那么它可能会被转移。)

【讨论】:

  • 但我不明白这是怎么回事,在单个 TextView 中,显示了几“行”数据!每个条目会有一个 TextView,还是一个带有多个“行”的 TextView?
  • @bat.t 你也可以做到。您可以为每一行创建一个 TextView,这可能允许独立自定义每个行,但如果您想使用 TextView 以表格格式显示数据,可以放置每个字符串,后跟换行符 '\ n' 在 TextView 中,也执行我上面提到的操作。这应该按照您的意愿格式化。
  • 非常感谢您的回答!
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 2022-01-24
  • 2017-10-13
  • 2016-12-15
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多