我有一个android listview,它有一个two_line_list_item布局.... text1和text2
我有一个SQL查询,它返回我的Cursor ....在下面的示例中,我已将NameA从SQL设置为text1,将NameB设置为text2
// 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查询)所以text1将是“NameA v NameB”...
提前致谢
答案 0 :(得分:1)
在您的查询中
NameA || "v" || NameB AS NameAB
然后删除第二个textView(android.R.text2)
在你的回报预测中," NameAB"遗漏其他列(保留KEY_ID),因为您将不再需要它们。
答案 1 :(得分:0)
在我看来,您需要编写扩展BaseAdapter的自定义适配器。
答案 2 :(得分: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中。
答案 3 :(得分: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进行操作。