我有一个应用程序,它使用带有标签导航的操作栏,通过自定义光标适配器显示列表视图,然后在单击列表视图项时显示详细数据。当我的设备处于纵向方向时,一切正常。
当我的设备处于横向时,我的问题就出现了。当我单击某个项目时,详细视图会在可见列表的顶部显示该项目。即:项目Accolate - Actonel在列表中可见。无论我点击哪个项目,都会显示Accolate。
截图:
这是我的onListItemClick方法:
public void onListItemClick(ListView parent, View v, int position, long id) {
mCurCheckPosition = position;
items.setSelectedPosition(position, cursor);
}
我正在使用片段查看我的listview和detailview。从肖像到风景的唯一区别是我在横向模式下连接到一个框架。这是我的适配器代码:
public class MyListAdapter extends SimpleCursorAdapter {
@SuppressWarnings("deprecation")
public MyListAdapter(Context context, int layout, Cursor cursor, String[] from, int[] to) {
super(context, layout , cursor, from, to);
}
public void setSelectedPosition(int position, Cursor cursor) {
// create data array
String [] data = new String[] {
cursor.getString(5),
cursor.getString(6),
cursor.getString(7),
cursor.getString(8),
cursor.getString(9),
cursor.getString(10),
cursor.getString(4)
};
// create the detail fragment
Bundle bundle = new Bundle();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
if (mDualPane == false) {
DetailFragment detailFragment = new DetailFragment();
bundle.putStringArray("Data", data);
detailFragment.setArguments(bundle);
ft.replace(android.R.id.content, detailFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
} else {
DetailFragment detailFragment = new DetailFragment();
bundle.putStringArray("Data", data);
detailFragment.setArguments(bundle);
ft.replace(R.id.details, detailFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// create the title textview
TextView title = (TextView) view.findViewById(R.id.item_title);
title.setText(cursor.getString(4));
}
}
我在点击过程中记录了位置,它与我光标中的正确记录匹配,但是适配器显示错误的数据。
任何想法或建议将不胜感激。谢谢你提前。
答案 0 :(得分:0)
我发现了导致我问题的原因。我的ListFragment中有以下命令:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
我认为这与在listview中标记行
有关