Java 在绑定listview之前从数据库中拆分字符串
我在具有以下结构的数据库上保存一些值:Java 在绑定listview之前从数据库中拆分字符串,java,android,listview,adapter,Java,Android,Listview,Adapter,我在具有以下结构的数据库上保存一些值: Name1-Group1 Name2-Group2 ... 现在,我需要加载这些值以在listview上显示它们,但我只需要显示名称。从数据库中删除组值不是一个解决方案,因为我需要这个值来进行排序 这就是我从数据库加载名称的方式: cursor = getContentResolver().query(TravelOrderProvider.CONTENT_URI, PROJECTION, selection, arguments, order); 然
Name1-Group1
Name2-Group2
...
现在,我需要加载这些值以在listview上显示它们,但我只需要显示名称。从数据库中删除组值不是一个解决方案,因为我需要这个值来进行排序
这就是我从数据库加载名称的方式:
cursor = getContentResolver().query(TravelOrderProvider.CONTENT_URI, PROJECTION, selection, arguments, order);
然后这就是我绑定listview的方式:
ListAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,
new String[] {TravelOrder.NAME}, new int[] {android.R.id.text1});
listView.setAdapter(mAdapter);
但在绑定它们之前,正如我之前所说,我需要获取名称,将它们拆分为只包含名称,而不包含组,并在listview上绑定它们
因此,我不知道如何从适配器获取值以使用它们(拆分它们),然后在适配器中再次获取它们。试试这个
ListAdapter mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
cursor,new String[] {TravelOrder.NAME},
new int[]{android.R.id.text1});
mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor,int columnIndex) {
if(view.getId() == android.R.id.text1)
{
TextView tvName= (TextView) view;
//do as you want split here
String[] separated = cursor.getString(columnName).split("-");
separated[0]; // this will contain "Name"
separated[1]; // this will contain "Group"
tvName.setText(separated[0]);
return true;
}
return false;
}
});
listView.setAdapter(mAdapter);
您可以使用setViewBinder()查看更多信息,如上文所述调用setViewBinder,或使用游标包装器更改游标的一列。只有一个问题,如何将包含名称(分隔为[0])的字符串设置为必须显示在listview中的字符串?