以下是我用于在单个textview中显示sqlite数据的代码。 到现在为止还挺好。但现在我需要数据以表格形式。我需要" billprint"字符串,因为我用它来打印打印设备中的细节。
那么,有没有什么方法可以在单个字符串文件中以表格形式打印/显示细节。?
private void displaydb() {
// TODO Auto-generated method stub
billprint = "";
TextView tv = (TextView)findViewById(R.id.textView1);
SQLiteDatabase myDB = null;
try {
myDB = getActivity().openOrCreateDatabase("shopcart1", android.content.Context.MODE_PRIVATE, null);
String selectQuery = "SELECT * FROM tbl_cartitems";
Cursor c = myDB.rawQuery(selectQuery, null);
int Column1 = c.getColumnIndex("productID");
int Column2 = c.getColumnIndex("productName");
int Column3 = c.getColumnIndex("productQuantity");
int Column4 = c.getColumnIndex("productPrice");
c.moveToFirst();
if (c != null) {
do {
String pID = c.getString(Column1);
String pName = c.getString(Column2);
String pQua = c.getString(Column3);
String pPri = c.getString(Column4);
billprint = billprint +""+
pID+" "+pName+" "+""+pQua+" "+pPri+"\n";
} while (c.moveToNext());
}
tv.setText(pppid);
tv.setTextSize(18F);
tv.setTextColor(Color.RED);
}
catch (Exception e) {
Toast.makeText(getActivity(), "Database Empty", Toast.LENGTH_LONG).show();
} finally {
if (myDB != null)
myDB.close();
}
}
到目前为止,输出采用以下形式:
prod-1 vanilla ice cream 1 15
prod-2 chocolate ice cream 5 50
prod-3 milk ice cream 10 150
但我想要的输出应该是表格形式,如:
prod-1 vanilla ice cream 1 15
prod-2 chocolate ice cream 5 50
prod-3 milk ice cream 10 150
layout(activity_testing.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.naji.productorder.Testing" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
不要使用这种编码标准。
答案 1 :(得分:0)
您可以使用WebView而不是TextView来显示。因为如果可以的话。此代码可以简化您的任务。
WebView webView;
webView = (WebView) findViewById(R.id.webView);
String billprint = "<table>";
if (c != null) {
do {
String pID = c.getString(Column1);
String pName = c.getString(Column2);
String pQua = c.getString(Column3);
String pPri = c.getString(Column4);
billprint += "<tr>"
+ "<td>prod-"+pID+"</td>"
+ "<td>"+pName+"</td>"
+ "<td>"+pQua+"</td>"
+ "<td>"+pPri+"</td>"
+ "</tr>";
} while (c.moveToNext());
}
billprint += "</table>";
webView.loadDataWithBaseURL(null, billprint, "text/html", "utf-8", null);
希望这有帮助!
答案 2 :(得分:0)
如果使用等宽字体,则可以使用java格式化程序为每个项目分配N个(本例中为16个)字符。
对于比例字体不起作用,因为它们的宽度不同。
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
String s1 = "foo";
String s2 = "bar";
String s3 = "foobar";
String s4 = "hubba bubba";
formatter.format("%16s %16s %16s %16s\n", s1, s2, s3, s4);
formatter.format("%16s %16s %16s %16s\n", s4, s3, s2, s1);
System.out.print(formatter);