package novoda.demo.fragments.list.frags;
import novoda.demo.fragments.list.R;
import novoda.demo.fragments.list.Constants;
import novoda.demo.fragments.list.activities.Details;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class List extends ListFragment {
boolean mHasDetailsFrame;
int mPositionChecked = 0;
int mPositionShown = -1;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, Constants.ITEMS));
View detailsFrame = getActivity().findViewById(R.id.frame_details);
mHasDetailsFrame = (detailsFrame != null) && (detailsFrame.getVisibility() == View.VISIBLE);
if (savedInstanceState != null) {
mPositionChecked = savedInstanceState.getInt("curChoice", 0);
mPositionShown = savedInstanceState.getInt("shownChoice", -1);
}
if (mHasDetailsFrame) {
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
upateDetailsFragment(mPositionChecked);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mPositionChecked);
outState.putInt("shownChoice", mPositionShown);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
upateDetailsFragment(position);
}
void upateDetailsFragment(int index) {
mPositionChecked = index;
if (mHasDetailsFrame) {
getListView().setItemChecked(index, true);
if (mPositionShown != mPositionChecked) {
Detail df = Detail.newInstance(index);
getFragmentManager()
.beginTransaction()
.replace(R.id.frame_details, df)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
mPositionShown = index;
}
} else {
Intent intent = new Intent();
intent.setClass(getActivity(), Details.class);
intent.putExtra("index", index);
startActivity(intent);
}
}
}