2011-06-13 55 views
0

我有一個Android的ListView和它有一個two_line_list_item佈局....文本1和文本的毗連結果到一個單一的列表視圖元素

我有一個SQL查詢返回了我....光標在下面的例子我已經設置NAMEA從SQL到文本1和NameB到文本2

 // Create an array to specify the fields we want to display in the list (only TITLE) 
    String[] from = new String[]{"NameA", "NameB"}; 

    // and an array of the fields we want to bind those fields to (in this case just text1) 
    int[] to = new int[]{android.R.id.text1, android.R.id.text2}; 

    // Now create a simple cursor adapter and set it to display 
    SimpleCursorAdapter matches = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, MatchesCursor, from, to); 
    setListAdapter(matches); 

我怎麼能去有關串聯的兩個名字(不更改我的SQL查詢),所以文本1將「NAMEA v NameB」 ...

在此先感謝

回答

0

在我看來,你需要編寫擴展BaseAdapter的自定義適配器。

0

一個骯髒的方式將使用XML中的3次:

<TextView 
     android:id="@+id/nameA" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="30dp" /> 
<TextView 
     android:id="@+id/separator" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" vs " 
     android:textSize="30dp" /> 
<TextView 
     android:id="@+id/nameB" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="30dp" /> 

包裹在一個水平LinearLayout中的一切。

0

你需要編寫自己的適配器擴展BaseAdapter

public class CustomAdapter extends BaseAdapter { 

    private Context context; 
    private int listItemLayout; 
    private String[] nameAs; 
    private String[] nameBs; 

    public CustomAdapter(Context context, int listItemLayout, String[] nameAs, String[] nameBs) { 
     this.context = context; 
     this.listItemLayout = listItemLayout; 
     this.nameAs = nameAs; 
     this.nameBs = nameBs; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     if(convertView==null) 
      convertView = LayoutInflater.from(context).inflate(listItemLayout, null); 

      TextView textView1 = (TextView)findViewById(android.R.id.text1); 
      textView1.setText(nameAs[position] + " v " + nameBs[position]); 
     return convertView; 
    } 

} 

現在,所有你需要做的是修改了一下你的數據庫訪問函數返回你的名字的兩個陣列,並將它們傳遞到的CustomAdapter

最終構造函數,調用:

CustomAdapter myAdapter = new CustomAdapter(this, android.R.layout.two_line_list_item, nameAs, nameBs); 
setListAdapter(myAdapter); 

作爲一個說明,也請儘量依照ViewHolder pattern在鏈接中建議。

1

在查詢不

NameA || "v" || NameB AS NameAB 

然後卸下第二的TextView(android.R.text2)

在你的回報預測把 「NameAB」 離開了其他列(保持KEY_ID)爲您將不再需要他們。

相關問題