2015-06-11 53 views
0

我有一個java類正在從android sqllite中的數據庫中獲取兩列。是否可以爲兩列設置不同的textview佈局屬性?如果是的話,我希望知道要走的路。如何爲不同的列設置不同的文本視圖

這就是我迄今爲止所做的。

我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); 

quering我們的數據。在這種情況下,方法,我想了firstLine TextView的性質爲Name設置列和secondLine textview屬性設置爲Ids列。

感謝您的幫助。

回答

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的年代,隨着編號text1text2 現在不是一個ArrayAdapter後者只適用於非常簡單的列表,我們使用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,並且每個映射都應該具有鍵「text1」和「text2」的條目。它可以這樣創建:

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

相關問題