package com.example.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.example.R;
import com.example.adapter.ListingAdapter;
import com.example.entity.ProductEntity;
import com.example.listener.OnDualPaneShowListener;
import java.util.ArrayList;
import java.util.List;
public class ListingFragment extends Fragment
{
private View mRootView;
private ListingAdapter mAdapter;
private OnDualPaneShowListener mDualPaneShowListener;
private List<ProductEntity> mProductList = new ArrayList<>();
@Override
public void onAttach(Context context)
{
super.onAttach(context);
// set dual pane listener
try
{
mDualPaneShowListener = (OnDualPaneShowListener) getActivity();
}
catch(ClassCastException e)
{
throw new ClassCastException(getActivity().getClass().getName() + " must implement " + OnDualPaneShowListener.class.getName());
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_listing, container, false);
return mRootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
bindData();
}
private void bindData()
{
boolean init = false;
// reference
ListView listView = getListView();
ViewGroup emptyView = (ViewGroup) mRootView.findViewById(android.R.id.empty);
// testing data
for(int i = 0; i < 32; i++)
{
ProductEntity p = new ProductEntity();
p.setName("Product " + (i));
mProductList.add(p);
}
// activity has dual pane layout
View dualPaneContainer = getActivity().findViewById(R.id.container_dual_pane);
boolean dualPane = dualPaneContainer != null && dualPaneContainer.getVisibility() == View.VISIBLE;
// listview content
if(mAdapter == null)
{
// create adapter
mAdapter = new ListingAdapter(getActivity(), mProductList, dualPane);
// initial fragment in second pane
if(dualPane && mProductList != null && mProductList.size() > 0)
{
mDualPaneShowListener.onDualPaneShow(SimpleFragment.class, 0);
init = true;
}
}
else
{
// refill adapter
mAdapter.refill(getActivity(), mProductList, dualPane);
}
// set adapter
listView.setAdapter(mAdapter);
// listview empty view
listView.setEmptyView(emptyView);
// set first item checked
if(init) listView.setItemChecked(0, true);
// listview item onclick
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// list position
int listPosition = getListPosition(position);
// listview item onclick
mDualPaneShowListener.onDualPaneShow(SimpleFragment.class, listPosition);
}
});
}
}