我有一个java类正在从android sqllite中的数据库中检索两列。是否可以将不同的textviews布局属性设置为两列?如果是,我希望知道要走的路。
这是我到目前为止所做的。
我的textview布局属性
<----Main Title---->
<TextView
android:id="@+id/firstLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textSize="14sp"
android:textStyle="bold" />
<!-- Subtitle-->
<TextView
android:id="@+id/secondLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/firstLine"
android:layout_below="@id/firstLine"
android:textSize="12sp"
/>
这是从数据库中查询数据的方法
/**
* DISPLAY RESULTS
*/
//Create Cursor object to read notification from the table
Cursor c = db.rawQuery("SELECT ID,NOTIFICATIONS FROM notices order by ID desc", null);
//If Cursor is valid
if (c != null ) {
Toast.makeText(Notification.this, "Query is valid", Toast.LENGTH_LONG).show();
//Move cursor to first row
if (c.moveToFirst()) {
do {
String Name = c.getString(c.getColumnIndex("NOTIFICATIONS"));
int Ids = c.getInt(c.getColumnIndex("ID"));
//Add the notification to Arraylist 'results'
results.add(Name);
}while (c.moveToNext()); //Move to next row
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.notification_textview,R.id.firstLine, results);
// Assign adapter to ListView
listView.setAdapter(adapter);
在这种情况下,我希望为firstLine
列设置Name
textview属性,并为secondLine
列设置Ids
textview属性。
感谢您的帮助。
答案 0 :(得分:0)
是的,这很简单。
创建一个自定义布局XML文件,表示res/layout
文件夹中列表视图的每一行。我们称之为list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24px" >
</TextView>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="16px" >
</TextView>
</LinearLayout>
正如您所看到的,其中有两个TextView,ID为text1
和text2
现在,我们使用SimpleAdapter
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.list_row, new String[] { "text1", "text2" },
new int[] { R.id.text1, R.id.text2 });
listView.setAdapter(adapter);
现在这里是棘手的部分。变量数据实际上是Map对象的ArrayList,每个映射都应该包含带键#34; text1&#34;和&#34; text2&#34;。它可以像这样创建:
data = new ArrayList<Map<String, Object>>;
for (int i=0; i<results.size(); i++){
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("text1", mainTitles.get(i));
hm.put("text2", subtitles.get(i));
data.add(hm);
}
假设所有第一行都存储在列表mainTitles
中,第二行存储在列表subtitles