Hiiı制作一个具有一定优先级的下拉导航,当ı点击其中一个时 我想从数据库中提取一些信息但是却无法从数据库中获取结果。 在我的项目中我有一个主要的活动和simplecursoradapter。在主要活动ı在行动栏的下拉菜单中有一些优先级。当ı选择其中一个,ı过滤数据库根据他们的优先级通过光标,并将结果光标发送到simplecursoradapter这是我在mainActivity中的导航代码
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
OnNavigationListener navigationListener = new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
filterPriorityItems(itemPosition);
todoAdapter.notifyDataSetChanged();
return true;
}
};
getActionBar().setListNavigationCallbacks(adapter, navigationListener);
我将itemposition发送到filterFunction,它也是主要的活动
private void filterPriorityItems(int itemPosition) {
String where=null;
ContentResolver resolver =getContentResolver();
switch(itemPosition){
case 0:
where = MyOpenHelper.PRIORITY + ">" + 5;
cursor = resolver.query(ContentProvider.CONTENT_URI, FROM, where,
null, null);
startManagingCursor(cursor);
break;
case 1:
where = MyOpenHelper.PRIORITY + "<" + 7 + "and " + ">" + 5;
cursor = resolver.query(ContentProvider.CONTENT_URI, FROM, null,
null, null);
startManagingCursor(cursor);
break;
case 2:
where = MyOpenHelper.PRIORITY + "<" + 7 + "and " + ">" + 5;
cursor = resolver.query(ContentProvider.CONTENT_URI, FROM, null,
null, null);
startManagingCursor(cursor);
break;
case 3:
where = MyOpenHelper.PRIORITY + "<" + 7 + "and " + ">" + 5;
cursor = resolver.query(ContentProvider.CONTENT_URI, FROM, null,
null, null);
startManagingCursor(cursor);
break;
default:
}
}
}
根据这个过滤器功能,我想返回一个光标,用于在我的simplecursoradapter中发送光标
todoAdapter = new SimpleCursorToDoAdapter(this, R.layout.todo_list_item , cursor, FROM, TO);
但是当我将光标发送到我的适配器时,它不会更改我想要过滤数据库的光标
答案 0 :(得分:1)
我解决了我的问题,我想解释一下。 这个问题的解决方案是碎片化。我在我的主要活动中创建了一个新片段,并且我编写了这段代码
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
fragment = new MyTodoListFragment();
FragmentTransaction ft =getFragmentManager().beginTransaction();
ft.replace(R.id.my_new,fragment,actionlist[itemPosition]);
ft.commit();
return true;
}
我在我的片段中发送项目位置。我在OnAttach()函数中通过getTag得到这个项目,之后我将活动中的代码移动到片段 问题解决了