Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在绑定listview之前从数据库中拆分字符串_Java_Android_Listview_Adapter - Fatal编程技术网

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中的字符串?