package cn.bingoogolapple.weibo.ui.pupupwindow; import android.app.Activity; import android.content.Context; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.WindowManager; import java.util.List; import cn.bingoogolapple.androidcommon.adapter.BGAOnItemChildClickListener; import cn.bingoogolapple.androidcommon.adapter.BGARecyclerViewAdapter; import cn.bingoogolapple.androidcommon.adapter.BGAViewHolderHelper; import cn.bingoogolapple.badgeview.BGABadgeCheckedTextView; import cn.bingoogolapple.weibo.R; import cn.bingoogolapple.weibo.model.HomeCategory; import cn.bingoogolapple.weibo.util.ToastUtils; import cn.bingoogolapple.weibo.util.UIUtils; /** * 作者:王浩 邮件:bingoogolapple@gmail.com * 创建时间:15/7/5 上午9:42 * 描述: */ public class HomeCategoryPopupWindow extends BasePopupWindow { private RecyclerView mCategoryRv; private CategoryAdapter mCategoryAdapter; private HomeCategoryPopupWindowDelegate mDelegate; List<HomeCategory> mHomeCategories; public HomeCategoryPopupWindow(Activity activity, View anchorView) { super(activity, R.layout.popwindow_home_category, anchorView, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT); } @Override protected void findView() { mCategoryRv = getViewById(R.id.rv_home_category_data); } @Override protected void setListener() { getViewById(R.id.btn_home_category_edit).setOnClickListener(this); mCategoryAdapter = new CategoryAdapter(mActivity); mCategoryAdapter.setOnItemChildClickListener(new BGAOnItemChildClickListener() { @Override public void onItemChildClick(View view, int position) { if (mDelegate != null && view.getId() == R.id.bctv_item_home_category) { HomeCategory homeCategory = mCategoryAdapter.getItem(position); for (HomeCategory category : mHomeCategories) { category.selected = false; } homeCategory.selected = true; homeCategory.hasNewStatus = false; mDelegate.onSelectCategory(homeCategory); } dismiss(); } }); } @Override protected void processLogic() { mCategoryRv.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); mCategoryRv.setAdapter(mCategoryAdapter); } @Override public void onClick(View v) { if (v.getId() == R.id.btn_home_category_edit) { ToastUtils.show("点击了编辑分组"); dismiss(); } } public void setCategorys(List<HomeCategory> homeCategories) { mHomeCategories = homeCategories; mCategoryAdapter.setDatas(mHomeCategories); } @Override public void show() { setWidth(UIUtils.getHalfScreenWidth(mActivity)); setHeight(UIUtils.getHalfScreenHeight(mActivity)); showAsDropDown(mAnchorView, (mAnchorView.getWidth() - getWidth()) / 2, -UIUtils.dp2px(mActivity, 12)); } public void setDelegate(HomeCategoryPopupWindowDelegate delegate) { mDelegate = delegate; } private static class CategoryAdapter extends BGARecyclerViewAdapter<HomeCategory> { public CategoryAdapter(Context context) { super(context, R.layout.item_home_category); } @Override protected void setItemChildListener(BGAViewHolderHelper viewHolderHelper) { viewHolderHelper.setItemChildClickListener(R.id.bctv_item_home_category); } @Override protected void fillData(BGAViewHolderHelper viewHolderHelper, int position, HomeCategory homeCategory) { if (TextUtils.isEmpty(homeCategory.header)) { viewHolderHelper.setVisibility(R.id.ll_item_home_header, View.GONE); } else { viewHolderHelper.setVisibility(R.id.ll_item_home_header, View.VISIBLE); viewHolderHelper.setText(R.id.tv_item_home_header, homeCategory.header); } BGABadgeCheckedTextView categoryBctv = viewHolderHelper.getView(R.id.bctv_item_home_category); if (homeCategory.selected) { categoryBctv.setChecked(true); } else { categoryBctv.setChecked(false); } if (homeCategory.hasNewStatus) { categoryBctv.showCriclePointBadge(); } else { categoryBctv.hiddenBadge(); } categoryBctv.setText(homeCategory.title); } } public interface HomeCategoryPopupWindowDelegate { void onSelectCategory(HomeCategory homeCategory); } }