Вы можете сохранить текущее положение и восстановить его из onCreateView.
private int currentCheckedPosition = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
listView.setOnItemClickListener(menuListener);
listView.setItemChecked(currentCheckedPosition, true);
...
}
private AdapterView.OnItemClickListener menuListener = new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listView.setItemChecked(currentCheckedPosition = position, true);
...
}
};
UPD
Это должно работать. Заменить код в ItemListFragment
public class ItemListFragment extends Fragment
{
// private int mActivatedPosition = ListView.INVALID_POSITION; //if you want to nothing selected on activity start
private int mActivatedPosition = 0;//if you want to first item selected on activity start
private ListView listView;
@Override
public void onAttach(Activity activity) {
setRetainInstance(true);
super.onAttach(activity);
if (!(activity instanceof Callbacks)) {
throw new IllegalStateException("Activity must implement fragment's callbacks.");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ContentAdapter mAdapter = new ContentAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, android.R.id.text1, DummyContent.ITEMS);
View view = inflater.inflate(R.layout.fancy_activity_list, container, false);
listView = (ListView) view.findViewById(android.R.id.list);
listView.setAdapter(mAdapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(mActivatedPosition, true);
listView.setOnItemClickListener(itemClickListener);
return view;
}
private AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listView.setItemChecked(mActivatedPosition = position, true);
if (getActivity() instanceof Callbacks) {
((Callbacks) getActivity()).onItemSelected(DummyContent.ITEMS.get(position).id);
}
}
};
public interface Callbacks
{
void onItemSelected(String id);
}
}
макет/fancy_activity_list_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/activatedBackgroundIndicator"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Content Here"/>
</LinearLayout>
ContentAdapter
public class ContentAdapter extends ArrayAdapter<DummyContent.DummyItem>
{
private LayoutInflater mInflater;
public ContentAdapter(Context context, int resource, int textViewResourceId, List<DummyContent.DummyItem> objects) {
super(context, resource, textViewResourceId, objects);
mInflater = LayoutInflater.from(getContext());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = mInflater.inflate(R.layout.fancy_activity_list_item, parent, false);
} else {
view = convertView;
}
DummyContent.DummyItem dummyItem = getItem(position);
TextView textView = (TextView) view.findViewById(R.id.textView);
textView.setText(dummyItem.content);
return view;
}
}
И вам нужно установить minSdkVersion 14 в build.gradle
Нужно было установить android: background = "? Android: attr/activatedBackgroundIndicator" to list Элемент макета.
Я нажимаю источник на GitHub здесь: https://github.com/WarrickF/DFragTest1/ –
Вот где я переопределяю getView() - https://github.com/WarrickF/DFragTest1/blob /master/app/src/main/java/app/com/victorioussolutions/dfragtest1/ContentAdapter.java –