package com.cjj.nices.fragment; import static com.norbsoft.typefacehelper.TypefaceHelper.typeface; import java.util.ArrayList; import net.youmi.android.banner.AdSize; import net.youmi.android.banner.AdView; import org.litepal.crud.DataSupport; import android.annotation.SuppressLint; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.internal.widget.AdapterViewCompat; import android.support.v7.internal.widget.AdapterViewCompat.OnItemClickListener; 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.AdapterView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import in.srain.cube.views.GridViewWithHeaderAndFooter; import uk.me.lewisdeane.ldialogs.CustomDialog; import com.cjj.custom.CustomPopWindow; import com.cjj.custom.CustomPopWindow.ItemSelectListener; import com.cjj.nices.activity.NewsDetailActivity; import com.cjj.nices.activity.R; import com.cjj.nices.adapter.NewsListAdapter; import com.cjj.nices.db.FavoriteTableModel; import com.cjj.nices.db.NicesDBHelper; import com.cjj.nices.model.NicesApplication; import com.cjj.nices.model.NicesNewsListEntity.NewsListEntity; /** * favorite fragment类 * @author cjj * */ public class FavoriteFragment extends Fragment implements android.widget.AdapterView.OnItemClickListener{ private GridViewWithHeaderAndFooter gv_favorite; private NewsListAdapter mAdapter; private TextView tv_tip; private View view_deve; private boolean isEmpty = false; public static FavoriteFragment newInstance() { FavoriteFragment fragment = new FavoriteFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.delete_favorite, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.delete) { if(isEmpty) { toastMsg("您还未收藏哦"); }else{ showPopWindow(); } } return super.onOptionsItemSelected(item); } public void showPopWindow() { CustomPopWindow popWindow = new CustomPopWindow(getActivity()); typeface(popWindow.getLL(), NicesApplication.nicesApplication.getKatongTypeface()); popWindow.showPopupWindow(view_deve); popWindow.setItemSelectListener(new ItemSelectListener() { @Override public void selectItem() { mAdapter.setIsDeleteFlag(true); } @Override public void selectAll() { showLDailog(); } }); } protected void showLDailog() { // // Create the builder with required paramaters - Context, Title, Positive Text // CustomDialog.Builder builder = new CustomDialog.Builder(Context context, String title, String positiveText); // // // Now we can any of the following methods. // builder.content(String content); // builder.negativeText(String negativeText); // builder.darkTheme(boolean isDark); // builder.typeface(Typeface typeface); // builder.titleTextSize(int size); // builder.contentTextSize(int size); // builder.buttonTextSize(int size); // builder.titleAlignment(Alignment alignment); // Use either Alignment.LEFT, Alignment.CENTER or Alignment.RIGHT // builder.titleColor(String hex); // int res, or int colorRes parameter versions available as well. // builder.contentColor(String hex); // int res, or int colorRes parameter versions available as well. // builder.positiveColor(String hex); // int res, or int colorRes parameter versions available as well. // builder.negativeColor(String hex); // int res, or int colorRes parameter versions available as well. // builder.positiveBackground(Drawable drawable); // int res parameter version also available. // builder.rightToLeft(boolean rightToLeft); // Enables right to left positioning for languages that may require so. // // // Now we can build the dialog. // CustomDialog customDialog = builder.build(); // // // Show the dialog. // customDialog.show(); CustomDialog.Builder builder = new CustomDialog.Builder(getActivity(), "温馨提示", "确定"); // Now we can any of the following methods. builder.content("您确定清空所有收藏记录吗?"); builder.negativeText("取消"); // Now we can build the dialog. CustomDialog customDialog = builder.build(); // // Show the dialog. customDialog.setClickListener(new CustomDialog.ClickListener() { @Override public void onConfirmClick() { DataSupport.deleteAll(FavoriteTableModel.class); mAdapter.updateData(null); mAdapter.notifyDataSetChanged(); tv_tip.setVisibility(View.VISIBLE); isEmpty = true; } @Override public void onCancelClick() { } }); customDialog.show(); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_favorite, null); return v; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { gv_favorite = (GridViewWithHeaderAndFooter) view.findViewById(R.id.gv_favorite); gv_favorite.setOnItemClickListener(this); tv_tip = (TextView) view.findViewById(R.id.tv_tip); typeface(tv_tip,NicesApplication.nicesApplication.getKatongTypeface()); view_deve = view.findViewById(R.id.view_deve); // 将广告条adView添加到需要展示的layout控件中 LinearLayout adLayout = (LinearLayout) view.findViewById(R.id.adLayout); AdView adView = new AdView(getActivity(), AdSize.FIT_SCREEN); adLayout.addView(adView); super.onViewCreated(view, savedInstanceState); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { new FavoriteDataAsyncTask().execute(); super.onActivityCreated(savedInstanceState); } @Override public void onDestroyView() { super.onDestroyView(); } @SuppressLint("NewApi") private class FavoriteDataAsyncTask extends AsyncTask<Void, Void,ArrayList<NewsListEntity>> { @Override protected ArrayList<NewsListEntity> doInBackground(Void... params) { ArrayList<NewsListEntity> list = NicesDBHelper.queryAllData(); return list; } @Override protected void onPostExecute(ArrayList<NewsListEntity> result) { super.onPostExecute(result); if(result!=null&&result.size()>0) { isEmpty = false; if(mAdapter == null) { mAdapter = new NewsListAdapter(getActivity(), result, true); gv_favorite.setAdapter(mAdapter); }else { mAdapter.updateData(result); } }else { isEmpty = true; tv_tip.setVisibility(View.VISIBLE); } } } private void toastMsg(String str) { Toast.makeText(getActivity(), str, Toast.LENGTH_SHORT).show(); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { NewsListEntity entity = (NewsListEntity) mAdapter.getItem(position); if (entity == null) return; Intent intent = new Intent(getActivity(), NewsDetailActivity.class); intent.putExtra("id", entity.id); intent.putExtra("newsEntity", entity); startActivity(intent); } }