From abce02c7a61820f5d580f87364d542e817be429c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 06 七月 2021 15:22:11 +0800 Subject: [PATCH] 1.1.1完善 --- app/src/main/java/com/tejia/lijin/app/ui/gmtemplate/GmTemplateFragment.java | 482 ++++++++++++----------------------------------------- 1 files changed, 109 insertions(+), 373 deletions(-) diff --git a/app/src/main/java/com/tejia/lijin/app/ui/gmtemplate/GmTemplateFragment.java b/app/src/main/java/com/tejia/lijin/app/ui/gmtemplate/GmTemplateFragment.java index 4df2965..090931e 100644 --- a/app/src/main/java/com/tejia/lijin/app/ui/gmtemplate/GmTemplateFragment.java +++ b/app/src/main/java/com/tejia/lijin/app/ui/gmtemplate/GmTemplateFragment.java @@ -1,428 +1,164 @@ package com.tejia.lijin.app.ui.gmtemplate; -import android.content.Intent; -import android.graphics.drawable.AnimationDrawable; +import android.os.Build; import android.os.Bundle; -import android.provider.Settings; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; +import android.view.Window; +import android.view.WindowManager; import android.widget.TextView; -import android.widget.Toast; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; -import com.viewpagerindicator.CirclePageIndicator; -import com.wpc.library.RetainViewFragment; -import com.wpc.library.content.ConnectivityChangeHelper; -import com.wpc.library.okhttp.OkHttpUtils; -import com.wpc.library.util.NetUtils; -import com.wpc.library.util.common.DimenUtils; -import com.wpc.library.util.common.StringUtils; -import com.wpc.library.widget.RatioLayout; import com.tejia.lijin.app.BasicTextHttpResponseHandler; import com.tejia.lijin.app.R; import com.tejia.lijin.app.ShoppingApi; -import com.tejia.lijin.app.entity.SecondCategory; -import com.tejia.lijin.app.entity.TaoBaoGoodsBrief; -import com.tejia.lijin.app.ui.recommend.RecommendCategoryAdapter; +import com.tejia.lijin.app.ui.BaseFragmentActivity; +import com.tejia.lijin.app.util.umengCustomEvent.GoodsCustomEvent; +import com.tejia.lijin.app.view.BaseFragment; +import com.viewpagerindicator.ImagePath; +import com.viewpagerindicator.TabPageIndicator_Gm; +import com.wpc.library.RetainViewFragment; +import com.wpc.library.okhttp.OkHttpUtils; import org.apache.http.Header; +import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import androidx.fragment.app.FragmentManager; +import androidx.viewpager.widget.ViewPager; /** - * 鍏叡妯$増鏄剧ず椤甸潰 + * 閫氱敤妯$増 */ public class GmTemplateFragment extends RetainViewFragment implements View.OnClickListener { + private TabPageIndicator_Gm gmtemplate_indicator;//鎸囩ず鍣� + private ViewPager gmtemplate_Pager; - private SwipeRefreshLayout srl_second_category; - private RecyclerView lv_second_category; - // private MyGridView gv_category_top; -// private TextView tv_update_time, tv_name; - private RecommendCategoryAdapter adapter;//娣樺疂鍟嗗搧閫傞厤 + private String key; + private String from; + private int type = 0;//涓婄骇浼犺繃鏉ョ殑type 榛樿涓�0 琛ㄧず鏈紶閫� + private GmTemplateTabAdapter adapter; + /** + * 瀵艰埅鏍忔爣棰� + */ + private ArrayList<Map<String, String>> navtitle = new ArrayList<>(); - private ViewPager vp_banner; - private CirclePageIndicator indicator_category; - private GmTemplatteTopAdapter bannerAdapter; - - private String firstCategory = null;//涓婄骇浼犺繃鏉ョ殑鍏抽敭璇� - //鑾峰彇Activity浼犻�掕繃鏉ョ殑鍙傛暟 - private Bundle mBundle; - private List<SecondCategory> secondList = new ArrayList<>(); - private List<TaoBaoGoodsBrief> mList = new ArrayList<>(); - private List<BannerList> mBanners = new ArrayList<>(); - private int page = 1; - private ImageView iv_slid_top; - private boolean isLoad = true; - View top_view; - View bottom; - TextView tv_loading; - ImageView iv_loading; - private int count = 1; - private LinearLayout ll_no_net, ll_no_data, ll_request_failture; - private ConnectivityChangeHelper mChangeHelper; - - private RatioLayout vp_recommend_ratio; //vp_recommend_ratio 杞挱婊氬姩 - private View view_category_top; - - String tag = "commoncontent/getNavGoodsList"; + String tag = "commoncontent/getNavList"; @Override public int getContentResource() { - return R.layout.fragment_second_category; + return R.layout.activity_gmtemplate; } @Override public void onCreateView(View contentView, Bundle savedInstanceState) { - srl_second_category = contentView.findViewById(R.id.srl_second_category); - lv_second_category = contentView.findViewById(R.id.lv_second_category); - - iv_slid_top = contentView.findViewById(R.id.iv_slid_top); - iv_slid_top.setOnClickListener(this); - - top_view = LayoutInflater.from(lv_second_category.getContext()).inflate(R.layout.item_category_top, null); - view_category_top = top_view.findViewById(R.id.view_category_top); -// gv_category_top = top_view.findViewById(R.id.gv_category_top); - vp_banner = top_view.findViewById(R.id.vp_recommend); - indicator_category = top_view.findViewById(R.id.indicator_recommend);//杞挱 灏忕偣 - vp_recommend_ratio = top_view.findViewById(R.id.vp_recommend_ratio);//杞挱婊氬姩 甯冨眬 -// tv_name = top_view.findViewById(R.id.tv_name); -// tv_update_time = top_view.findViewById(R.id.tv_update_time); -// gv_category_top.getFocusedChild(); - - vp_banner.setCurrentItem(0, true); - bannerAdapter = new GmTemplatteTopAdapter(mBanners, getActivity()); - vp_banner.setAdapter(bannerAdapter); - vp_banner.postDelayed(mAutoScroller, 2000); - - float hRatio = 260 / 720f; - float wRatio = 23 / 720f; - int bottomPo = (int) (DimenUtils.getScreenWidth(getActivity()) * hRatio); - int rightPo = (int) (DimenUtils.getScreenWidth(getActivity()) * wRatio); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(DimenUtils.dip2px(getActivity(), 40), DimenUtils.dip2px(getActivity(), 40)); - params.setMargins(0, 0, rightPo, bottomPo); - params.gravity = Gravity.BOTTOM | Gravity.RIGHT; - iv_slid_top.setLayoutParams(params); - bottom = LayoutInflater.from(getContext()).inflate(R.layout.item_recyclerview_bottom, null); - tv_loading = bottom.findViewById(R.id.tv_loading); - iv_loading = bottom.findViewById(R.id.iv_loading); - AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable( - R.drawable.anim_list_loading); - iv_loading.setImageDrawable(animationDrawable); - animationDrawable.start(); -// Glide.with(this).load(R.drawable.gif_loading).into(iv_loading); - bottom.setVisibility(View.GONE); - firstCategory = getArguments().getString("key", null); - //鑾峰彇Activity浼犻�掕繃鏉ョ殑鍙傛暟 - mBundle = getArguments(); -// tv_name.setText("绮鹃��" + firstCategory.getName()); - lv_second_category.setLayoutManager(new LinearLayoutManager(lv_second_category.getContext())); - lv_second_category.setBackgroundColor(getResources().getColor(R.color.register_gray)); - ////////////////// -// FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) srl_second_category.getLayoutParams(); -// layoutParams.setMargins(DimenUtils.dip2px(getContext(), 10), 0, DimenUtils.dip2px(getContext(), 10), 0); -// srl_second_category.setLayoutParams(layoutParams); - ///////////////////// - String from = getArguments().getString("from"); - if (StringUtils.isEmpty(from)) - from = "閫氱敤妯℃澘"; - adapter = new RecommendCategoryAdapter(lv_second_category.getContext(), mList, firstCategory, from); -// adapter.isHorizontal = true; - adapter.isFirst = true; - lv_second_category.setAdapter(adapter); -// adapter.addHeaderView(top_view); - adapter.addFooterView(bottom); - - ll_no_net = contentView.findViewById(R.id.ll_no_net); - ll_no_data = contentView.findViewById(R.id.ll_no_data); - ll_request_failture = contentView.findViewById(R.id.ll_request_failture); - contentView.findViewById(R.id.tv_net_setting).setOnClickListener(this); - contentView.findViewById(R.id.tv_refresh).setOnClickListener(this); - mChangeHelper = new ConnectivityChangeHelper(ll_no_net.getContext(), - new ConnectivityChangeHelper.OnConnectivityChangeListener() { - - @Override - public void onNetworkUnAvailable() { - if (mList.size() == 0) - requestState(3); - } - - @Override - public void onNetworkAvailable() { - requestState(0); - if (mList.size() == 0) { - getGoodsList(); -// getCateGorySecond(); - } - } - }); - - srl_second_category.setRefreshing(true); - srl_second_category.setColorSchemeColors(getResources().getColor(R.color.theme)); - srl_second_category.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - page = 1; - getGoodsList(); -// getCateGorySecond(); - } - }); - - lv_second_category.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); - int first = manager.findFirstVisibleItemPosition(); - int last = manager.findLastVisibleItemPosition(); - int total = manager.getItemCount(); - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - if (first == 0) { - iv_slid_top.setVisibility(View.GONE); - } - if (last == total - 1 && mList.size() < count && isLoad) { - page++; - isLoad = false; - tv_loading.setText(getResources().getString(R.string.loading_more_text)); - iv_loading.setVisibility(View.VISIBLE); - getGoodsList(); - } - } - } - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, final int dy) { - super.onScrolled(recyclerView, dx, dy); - if (Math.abs(dy) > 10) { - if (dy > 0) { - iv_slid_top.setVisibility(View.GONE); - } else { - iv_slid_top.setVisibility(View.VISIBLE); - } - } - } - }); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - private Runnable mAutoScroller = new Runnable() { - - @Override - public void run() { - PagerAdapter adapter = vp_banner.getAdapter(); - if (adapter != null && adapter.getCount() != 0) { - vp_banner.setCurrentItem((vp_banner.getCurrentItem() + 1) - % adapter.getCount(), true); - } - vp_banner.postDelayed(this, 5000); + getActivity().setTheme(R.style.AppTabTheme5); + initView(contentView); + key = getArguments().getString("key"); + from = getArguments().getString("from"); + String types = getArguments().getString("type"); + if (types != null && !types.equals("")) {//涓婄骇浼犺繃鏉ョ殑type + double aDouble = Double.valueOf(types); + type = (int) aDouble;//榛樿涓�0 琛ㄧず鏈紶閫� } - }; - - @Override - public void onResume() { - super.onResume(); - mChangeHelper.registerReceiver(); - indicator_category.setViewPager(vp_banner); - -// MobclickAgent.onPageStart("鍒嗙被璇︽儏椤�"); - } - - @Override - public void onPause() { - super.onPause(); - mChangeHelper.unregisterReceiver(); -// MobclickAgent.onPageEnd("鍒嗙被璇︽儏椤�"); - srl_second_category.setRefreshing(false); - srl_second_category.destroyDrawingCache(); - srl_second_category.clearAnimation(); + GoodsCustomEvent.goodsListCommonTemplate(getContext(), types); + FragmentManager fm = getChildFragmentManager(); + adapter = new GmTemplateTabAdapter(fm, navtitle, key, type + "", from); + gmtemplate_Pager.setAdapter(adapter); + gmtemplate_indicator.setImgList(imgList); + gmtemplate_indicator.setViewPager(gmtemplate_Pager); + getNavList(key);//鑾峰彇 鎸囩ず鍣ㄦ暟鎹� } - private void getGoodsList() { - if (firstCategory == null) { - srl_second_category.setRefreshing(false); - return; - } - ShoppingApi.getNavGoodsList(lv_second_category.getContext(), page + "", firstCategory, getArguments().getString("cid", ""), - getArguments().getString("type", ""), new BasicTextHttpResponseHandler() { - @Override - public void onStart() { - super.onStart(); - if (page > 1) { - bottom.setVisibility(View.VISIBLE); - } else { - bottom.setVisibility(View.GONE); - } - } - - @Override - public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { - bottom.setVisibility(View.GONE); - srl_second_category.setRefreshing(false); - if (jsonObject.optString("code").equalsIgnoreCase("0")) { - Gson gson = new GsonBuilder().serializeNulls().create(); - List<TaoBaoGoodsBrief> list = gson.fromJson( - jsonObject.getJSONObject("data").optJSONArray("list").toString(), - new TypeToken<List<TaoBaoGoodsBrief>>() { - }.getType()); -// tv_update_time.setText(jsonObject.optJSONObject("data").optString("time") + " 鏂板搧"); - if (page == 1) - mList.clear(); - mList.addAll(list); - adapter.notifyDataSetChanged(); -// adapter.notifyItemRangeChanged(mList.size(), list.size());//鍊掑簭鍒锋柊鍒楄〃 - isLoad = true; - count = Integer.parseInt(jsonObject.optJSONObject("data").optString("count")); - - if (mList.size() == count) { - bottom.setVisibility(View.VISIBLE); - iv_loading.setVisibility(View.GONE); - tv_loading.setText(getResources().getString(R.string.list_no_more)); - } - requestState(mList.size() == 0 ? 1 : 0); - getCateGorySecond(jsonObject);//鑾峰彇banner鏁版嵁 - } else { - if (mList.size() == 0) - requestState(2); -// SingleToast.showToast(lv_second_category.getContext(), jsonObject.optString("msg")); - Toast.makeText(lv_second_category.getContext(), jsonObject.optString("msg"), Toast.LENGTH_SHORT).show(); - } - - } - - @Override - public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { - super.onFailure(statusCode, headers, responseString, throwable); -// Log.i("mResult", "璇锋眰閿欒--" + responseString); - srl_second_category.setRefreshing(false); - bottom.setVisibility(View.GONE); - if (mList.size() == 0) { - if (NetUtils.getNetworkState(getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) { - requestState(3); - } else { - requestState(2); - } - } else { - if (NetUtils.getNetworkState(getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) { -// SingleToast.showToast(lv_second_category.getContext(), "缃戠粶鏈繛鎺ワ紝璇锋娴嬬綉缁滆缃�"); - Toast.makeText(lv_second_category.getContext(), "缃戠粶鏈繛鎺ワ紝璇锋娴嬬綉缁滆缃�", Toast.LENGTH_SHORT).show(); - } else { -// SingleToast.showToast(lv_second_category.getContext(), "缃戠粶杩炴帴寮傚父锛岃妫�娴嬬綉缁滆缃�"); - Toast.makeText(lv_second_category.getContext(), "缃戠粶杩炴帴寮傚父锛岃妫�娴嬬綉缁滆缃�", Toast.LENGTH_SHORT).show(); - } - } - } - - @Override - public void onFinish() { - super.onFinish(); - srl_second_category.setRefreshing(false); - } - }); + /** + * 鎺т欢鍒濆鍖� + */ + private void initView(View view) { + view.findViewById(R.id.ll_top).setVisibility(View.GONE); + gmtemplate_indicator = view.findViewById(R.id.gmtemplate_indicator); + gmtemplate_Pager = view.findViewById(R.id.gmtemplate_Pager); } /** - * 鑾峰彇 banner 鏁版嵁 + * 鍗曞嚮浜嬩欢 * - * @param jsonObject + * @param v */ - private void getCateGorySecond(JSONObject jsonObject) { -// Log.e("eee", "鑾峰彇 banner 鏁版嵁: "); - if (firstCategory == null) { - srl_second_category.setRefreshing(false); - return; - } - srl_second_category.setRefreshing(false); - if (jsonObject.optString("code").equalsIgnoreCase("0")) { -// if (secondList == null || secondList.size() == 0) { //褰撴暟鎹负0鐨勬椂鍊� 闅愯棌涔濆鏍煎垎绫� -//// gv_category_top.setVisibility(View.GONE); -// } - - Gson gson2 = new GsonBuilder().serializeNulls().create(); - List<BannerList> list2 = gson2.fromJson(jsonObject.optJSONObject("data").optJSONArray("bannerList").toString(), new TypeToken<List<BannerList>>() { - }.getType()); - if (mBanners != null && mBanners.size() > 0) { - mBanners.clear(); - } - if (mBanners != null) { - mBanners.addAll(list2); - } - - if (mBanners == null || mBanners.size() == 0) { //娌℃湁鏁版嵁 闅愯棌 杞挱 - vp_recommend_ratio.setVisibility(View.GONE); - view_category_top.setVisibility(View.GONE); -// if (adapter.haveHeaderView()) { -// adapter.deleteHeaderView(null); -// } - } else { //鏈夋潯鏁版嵁鐨勬椂鍊� - if (!adapter.haveHeaderView()) { - adapter.addHeaderView(top_view); - } - vp_recommend_ratio.setVisibility(View.VISIBLE); - view_category_top.setVisibility(View.VISIBLE); - if (mBanners.size() > 1) { - indicator_category.setVisibility(View.VISIBLE);//杞挱灏忕偣 - } else { - indicator_category.setVisibility(View.GONE); - } - bannerAdapter.notifyDataSetChanged(); - } - - } else { -// gv_category_top.setVisibility(View.GONE); - vp_recommend_ratio.setVisibility(View.GONE); - } - - - } - @Override public void onClick(View v) { switch (v.getId()) { - case R.id.iv_slid_top: - lv_second_category.getLayoutManager().scrollToPosition(0); - break; - case R.id.tv_net_setting: - startActivity(new Intent(Settings.ACTION_SETTINGS)); - break; - case R.id.tv_refresh: - startActivity(new Intent(Settings.ACTION_SETTINGS)); + default: break; } } + List<ImagePath> imgList = new ArrayList<>(); + /** - * 璇锋眰鐘舵�� 0 鏁版嵁姝e父灞曠ず;1 杩斿洖鏁版嵁涓虹┖;2 缃戠粶璇锋眰澶辫触;3 娌℃湁杩炴帴缃戠粶 + * 鑾峰彇閫氱敤妯℃澘鐨勫鑸爮 * - * @param state + * @param title 涓婄骇浼犺繃鏉ョ殑鍏抽敭璇� */ - private void requestState(int state) { - srl_second_category.setVisibility(state == 0 ? View.VISIBLE : View.GONE); - lv_second_category.setVisibility(state == 0 ? View.VISIBLE : View.GONE); - ll_no_data.setVisibility(state == 1 ? View.VISIBLE : View.GONE); - ll_request_failture.setVisibility(state == 2 ? View.VISIBLE : View.GONE); - ll_no_net.setVisibility(state == 3 ? View.VISIBLE : View.GONE); + private void getNavList(String title) { + ShoppingApi.getNavList(getContext(), title, type + "", new BasicTextHttpResponseHandler() { + @Override + public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { + if (jsonObject.optInt("code") == 0) { + if (navtitle != null && navtitle.size() > 0) { + navtitle.clear(); + } + if (imgList != null && imgList.size() > 0) { + imgList.clear(); + } + JSONArray json = jsonObject.optJSONArray("data"); + //褰揹ata鏁扮粍涓�0鏃惰〃绀烘病鏈夊鑸爮 + if (json == null || json.length() == 0) { + gmtemplate_indicator.setVisibility(View.GONE); + Map<String, String> map = new HashMap<>(); + map.put("name", ""); + map.put("cid", ""); + navtitle.add(map); + } else {//鏈夊鑸爮 + gmtemplate_indicator.setVisibility(View.VISIBLE); + for (int i = 0; i < json.length(); i++) { + Map<String, String> map = new HashMap<>(); + ImagePath info = new ImagePath(); + map.put("name", ((JSONObject) json.get(i)).optString("name", "")); + map.put("cid", ((JSONObject) json.get(i)).optString("cid", "")); + navtitle.add(map); + info.setImgUrl(((JSONObject) json.get(i)).optString("picture", "")); + imgList.add(info); + } + } + adapter.notifyDataSetChanged(); + gmtemplate_indicator.notifyDataSetChanged(); + } else { +// Toast.makeText(GmTemplate.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show(); + } + } + + //涓嶈璇锋眰鏄惁鍦ㄦ湇鍔″櫒瀛樺湪 閮戒細鍥炶皟 + @Override + public void onFinish() { + super.onFinish(); + } + + }); } + @Override public void onDestroy() { super.onDestroy(); + gmtemplate_indicator = null;//鎸囩ず鍣� + gmtemplate_Pager = null; + key = null; + type = 0;//涓婄骇浼犺繃鏉ョ殑type 榛樿涓�0 琛ㄧず鏈紶閫� + adapter = null; OkHttpUtils.getInstance().cancelTag(tag); } } -- Gitblit v1.8.0