在绑定listview之前从数据库中拆分String

时间:2014-06-17 08:55:10

标签: java android listview adapter

我在具有这种结构的数据库中保存了一些值:

Name1-Group1
Name2-Group2
...

现在,我需要加载这些值以在列表视图中显示它们,但我只需要显示名称。从数据库中删除Group值不是解决方案,因为我需要此值来进行排序可用性。

所以,这是我从数据库加载名称的方式:

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

但在绑定它们之前,正如我之前所说,我需要获取名称,将它们拆分为只有名称,没有组,并将它们绑定在列表视图上。

所以,我不知道怎么做的是如何从适配器中获取值以使用它们(拆分它们)然后再次在适配器中获取它们。

1 个答案:

答案 0 :(得分:1)

试试这个

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