package com.aspsine.swipetoloadlayout.demo.fragment;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.aspsine.swipetoloadlayout.OnLoadMoreListener;
import com.aspsine.swipetoloadlayout.OnRefreshListener;
import com.aspsine.swipetoloadlayout.SwipeToLoadLayout;
import com.aspsine.swipetoloadlayout.demo.R;
/**
* A simple {@link Fragment} subclass.
*/
public class NavJavaCodeFragment extends BaseNavigationFragment implements OnRefreshListener, OnLoadMoreListener {
private SwipeToLoadLayout swipeToLoadLayout;
private View header;
private View footer;
private int mRefreshNum;
private int mLoadMoreNum;
private ArrayAdapter<String> mAdapter;
private LayoutInflater mInflater;
private int mStyleNum;
private int mHeaderNum;
private int mFooterNum;
public static BaseNavigationFragment newInstance() {
BaseNavigationFragment fragment = new NavJavaCodeFragment();
return fragment;
}
public NavJavaCodeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
mAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mInflater = inflater;
return inflater.inflate(R.layout.fragment_nav_java_code, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setTitle("Via java code");
swipeToLoadLayout = (SwipeToLoadLayout) view.findViewById(R.id.swipeToLoadLayout);
ListView listView = (ListView) view.findViewById(R.id.swipe_target);
listView.setAdapter(mAdapter);
swipeToLoadLayout.setOnRefreshListener(this);
swipeToLoadLayout.setOnLoadMoreListener(this);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showConfigDialog();
}
}, 500);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_config, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_config) {
showConfigDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onLoadMore() {
swipeToLoadLayout.postDelayed(new Runnable() {
@Override
public void run() {
swipeToLoadLayout.setLoadingMore(false);
mAdapter.add("Load More" + mLoadMoreNum);
mLoadMoreNum++;
}
}, 3000);
}
@Override
public void onRefresh() {
swipeToLoadLayout.postDelayed(new Runnable() {
@Override
public void run() {
swipeToLoadLayout.setRefreshing(false);
mAdapter.insert("Refresh" + mRefreshNum, 0);
mRefreshNum++;
}
}, 3000);
}
Dialog dialog;
private void showConfigDialog() {
if (dialog == null) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.layout_dialog_config, null);
initDialogView(view);
dialog = new AlertDialog.Builder(getActivity())
.setView(view)
.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
swipeToLoadLayout.post(new Runnable() {
@Override
public void run() {
swipeToLoadLayout.setRefreshing(true);
}
});
}
}).create();
}
dialog.show();
}
private void initDialogView(View view) {
final RadioGroup rgStyle = (RadioGroup) view.findViewById(R.id.rgStyle);
final RadioGroup rgHeader = (RadioGroup) view.findViewById(R.id.rgHeader);
final RadioGroup rgFooter = (RadioGroup) view.findViewById(R.id.rgFooter);
rgStyle.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
for (int i = 0; i < rgStyle.getChildCount(); i++) {
RadioButton rb = (RadioButton) rgStyle.getChildAt(i);
if (rb.isChecked()) {
changeStyle(i);
break;
}
}
}
});
rgHeader.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
for (int i = 0; i < rgHeader.getChildCount(); i++) {
RadioButton rb = (RadioButton) rgHeader.getChildAt(i);
if (rb.isChecked()) {
changeHeader(i);
break;
}
}
}
});
rgFooter.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
for (int i = 0; i < rgFooter.getChildCount(); i++) {
RadioButton rb = (RadioButton) rgFooter.getChildAt(i);
if (rb.isChecked()) {
changeFooter(i);
break;
}
}
}
});
((RadioButton) rgStyle.getChildAt(mStyleNum)).setChecked(true);
((RadioButton) rgHeader.getChildAt(mHeaderNum)).setChecked(true);
((RadioButton) rgFooter.getChildAt(mFooterNum)).setChecked(true);
}
private void changeFooter(int i) {
mFooterNum = i;
View view = null;
switch (i) {
case 0:
view = mInflater.inflate(R.layout.layout_classic_footer, swipeToLoadLayout, false);
break;
case 2:
view = mInflater.inflate(R.layout.layout_google_footer, swipeToLoadLayout, false);
break;
case 1:
view = mInflater.inflate(R.layout.layout_google_hook_footer, swipeToLoadLayout, false);
break;
}
if (view != null) {
swipeToLoadLayout.setLoadMoreFooterView(view);
}
}
private void changeHeader(int i) {
mHeaderNum = i;
View view = null;
switch (i) {
case 0:
view = mInflater.inflate(R.layout.layout_twitter_header, swipeToLoadLayout, false);
break;
case 1:
view = mInflater.inflate(R.layout.layout_google_hook_header, swipeToLoadLayout, false);
break;
case 2:
view = mInflater.inflate(R.layout.layout_google_header, swipeToLoadLayout, false);
break;
case 3:
view = mInflater.inflate(R.layout.layout_jd_header, swipeToLoadLayout, false);
break;
}
if (view != null) {
swipeToLoadLayout.setRefreshHeaderView(view);
}
}
private void changeStyle(int i) {
mStyleNum = i;
switch (i) {
case 0:
swipeToLoadLayout.setSwipeStyle(SwipeToLoadLayout.STYLE.CLASSIC);
break;
case 1:
swipeToLoadLayout.setSwipeStyle(SwipeToLoadLayout.STYLE.ABOVE);
break;
case 2:
swipeToLoadLayout.setSwipeStyle(SwipeToLoadLayout.STYLE.BLEW);
break;
case 3:
swipeToLoadLayout.setSwipeStyle(SwipeToLoadLayout.STYLE.SCALE);
break;
}
}
}