package com.tejia.lijin.app.ui.BrandRebate;
|
|
import android.content.ContentValues;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.database.Cursor;
|
import android.database.sqlite.SQLiteDatabase;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
import androidx.annotation.Nullable;
|
import androidx.viewpager.widget.ViewPager;
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.viewpagerindicator.TabPageIndicator_Original;
|
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.cache.DiskLruCache;
|
import com.wpc.library.util.common.StorageUtils;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.sqlite.CustomServiceSQLiteOpenHelper;
|
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
|
import com.tejia.lijin.app.util.umengCustomEvent.BrandRebateEvent;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 品牌
|
*/
|
public class BrandFragment extends RetainViewFragment implements View.OnClickListener {
|
private ViewPager fragment_brand_vp;//Viewpager
|
//实例化TabPageIndicator,然后与ViewPager绑在一起(核心步骤)
|
private TabPageIndicator_Original indicator;
|
private TextView tv_middle, tv_top_bar_left;
|
private ConnectivityChangeHelper mChangeHelper;
|
|
|
/**
|
* Tab标题
|
*/
|
private ArrayList<Map<String, String>> TITLE = new ArrayList<>();
|
private BrandTabAdapter adapter;
|
|
private LinearLayout ll_no_net, ll_no_data, ll_request_failture;
|
private ImageView ll_no_data_rf;
|
private ShapeLoadingDialog pd = null;//缓冲
|
private SQLiteDatabase db;
|
private CustomServiceSQLiteOpenHelper openHelper;
|
private DiskLruCache cache;
|
|
private String tag1 = "brand/getClass";
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_brand;
|
}
|
|
@Override
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
try {
|
cache = DiskLruCache.open(
|
new File(StorageUtils.getCacheDirectory(getContext())
|
.toString(), "http"), getVersionNum(getContext()),
|
1, 1024 * 1024);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
private int getVersionNum(Context context) {
|
try {
|
PackageInfo pi = context.getPackageManager().getPackageInfo(
|
context.getPackageName(), 0);
|
return pi.versionCode;
|
} catch (PackageManager.NameNotFoundException e) {
|
e.printStackTrace();
|
return 1;
|
}
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
inint(contentView);//初始化控件
|
OnClickListener();//註冊单击事件
|
getActivity().setTheme(R.style.AppTabTheme1);
|
openHelper = new CustomServiceSQLiteOpenHelper(tv_middle.getContext());
|
tv_middle.setText("潮牌");
|
tv_middle.setTextSize(22);
|
tv_middle.getPaint().setFakeBoldText(true);
|
tv_middle.setTextColor(getResources().getColor(R.color.theme));
|
|
adapter = new BrandTabAdapter(getChildFragmentManager(), TITLE);//初始化 Adapter
|
fragment_brand_vp.setAdapter(adapter);//设置 Adapter、
|
fragment_brand_vp.setOffscreenPageLimit(1);//参数为预加载数量,系统最小值为1。慎用!预加载数量过多低端机子受不了(-1 全加载)
|
indicator.setViewPager(fragment_brand_vp, 0);// TabPageIndicator顶部导航栏设置
|
//如果要设置监听ViewPager中包含的Fragment的改变(滑动切换页面),使用OnPageChangeListener为它指定一个监听器,那么不能像之前那样直接设置在ViewPager上了,而要设置在Indicator上,
|
/**
|
* 指示器 item 选择监听
|
*/
|
indicator.setOnTabSelectedListener(new TabPageIndicator_Original.OnTabSelectedListener() {
|
@Override
|
public void onTabSelected(int position) {
|
BrandRebateEvent.brandhomegoods(tv_middle.getContext(), TITLE.get(position).get("name"));//品牌-点击店铺详情商品
|
}
|
});
|
waitinquire();//打开缓冲
|
loadCacheData();
|
mChangeHelper = new ConnectivityChangeHelper(tv_middle.getContext(),
|
new ConnectivityChangeHelper.OnConnectivityChangeListener() {
|
|
@Override
|
public void onNetworkUnAvailable() {
|
requestState(3);
|
// getBranSqlData();//获取数据库文件
|
}
|
|
@Override
|
public void onNetworkAvailable() {
|
requestState(0);
|
if (TITLE.size() == 0) {
|
getTab();//获取导航栏数据
|
// getBranSqlData();//获取数据库文件
|
}
|
}
|
});
|
// getTab();//获取导航栏数据
|
}
|
|
private void loadCacheData() {
|
if (cache != null) {
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getBrandType"));
|
if (snapshot != null) {
|
if (TITLE != null && TITLE.size() > 0) {
|
TITLE.clear();
|
}
|
JSONArray array = new JSONArray(snapshot.getString(0));
|
for (int i = 0; i < array.length() + 1; i++) {
|
Map<String, String> map = new HashMap<>();
|
map.put("name", i == 0 ? "精选" : ((JSONObject) array.get(i - 1)).optString("name"));
|
map.put("id", i == 0 ? "0" : ((JSONObject) array.get(i - 1)).optInt("id") + "");
|
TITLE.add(map);
|
// fragments.add(new FragmentBrandFragment());
|
}
|
adapter.notifyDataSetChanged();
|
indicator.notifyDataSetChanged();
|
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
|
}
|
|
/**
|
* 从数据库获取 品牌列表数据
|
*/
|
private void getBranSqlData() {
|
db = openHelper.getWritableDatabase();//以读写的方式访问数据库
|
Cursor cursor = db.rawQuery("select * from brand_table", null);
|
if (cursor.getCount() != 0) {
|
while (cursor.moveToNext()) { //遍历数据库
|
String brandid = cursor.getString(cursor.getColumnIndex("brandid"));
|
String brandname = cursor.getString(cursor.getColumnIndex("brandname"));
|
Map<String, String> map = new HashMap<>();
|
map.put("name", brandname);
|
map.put("id", brandid);
|
TITLE.add(map);
|
}
|
}
|
cursor.close();//关闭cursor
|
db.close();// 关闭数据库
|
getTab();//获取导航栏数据
|
// setBranSqldata();
|
}
|
|
/**
|
* 存入数据库 品牌列表数据
|
*/
|
private void setBranSqldata() {
|
db = openHelper.getWritableDatabase();//以读写的方式访问数据库
|
Cursor cursor = db.rawQuery("select * from brand_table", null);
|
if (cursor.getCount() == 0) {//没一条数据
|
//存入数据
|
for (Map<String, String> map : TITLE) {
|
ContentValues value = new ContentValues();
|
value.put("brandid", map.get("id"));
|
value.put("brandname", map.get("name"));
|
db.insert("brand_table", null, value);
|
}
|
} else {
|
//清空表
|
db.delete("brand_table", null, null);
|
//存入数据
|
for (Map<String, String> map : TITLE) {
|
ContentValues value = new ContentValues();
|
value.put("brandid", map.get("id"));
|
value.put("brandname", map.get("name"));
|
db.insert("brand_table", null, value);
|
}
|
}
|
// Log.e("eee", "setBranSqldata: " + cursor.getCount());
|
cursor.close();//关闭cursor
|
db.close();// 关闭数据库
|
// adapter.notifyDataSetChanged();
|
// indicator.notifyDataSetChanged();
|
}
|
|
|
/**
|
* 初始化控件
|
*
|
* @param contentView
|
*/
|
private void inint(View contentView) {
|
indicator = contentView.findViewById(R.id.fragment_brand_indicator);
|
fragment_brand_vp = contentView.findViewById(R.id.fragment_brand_vp);
|
tv_middle = contentView.findViewById(R.id.tv_top_bar_middle);
|
tv_top_bar_left = contentView.findViewById(R.id.tv_top_bar_left);
|
//无数据 无网络 网络异常
|
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);
|
ll_no_data_rf = contentView.findViewById(R.id.iv_refresh);
|
ll_no_data_rf.setOnClickListener(this);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = getActivity().getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.TRANSPARENT);
|
int result = 0;
|
int resourceId = getActivity().getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = getActivity().getResources().getDimensionPixelSize(resourceId);
|
}
|
//设置状态栏文字颜色及图标为深色
|
getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
contentView.findViewById(R.id.v_status_bar).setLayoutParams(params);
|
} else {
|
contentView.findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
}
|
|
/**
|
* 单击事件
|
*/
|
private void OnClickListener() {
|
tv_top_bar_left.setVisibility(View.GONE);
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_net_setting:
|
case R.id.tv_refresh:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
case R.id.iv_refresh:
|
// fragment_brand_fragment_sf.setRefreshing(false);
|
getTab();//获取导航栏数据
|
break;
|
default:
|
break;
|
}
|
}
|
|
|
//品牌商品卡头部背景图片链接
|
public static String navBgPicture;
|
|
/**
|
* 获取 标题栏数据
|
*/
|
|
|
private void getTab() {
|
ShoppingApi.getClass(tv_middle.getContext(), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
dpdismiss();//关闭
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
JSONObject json = jsonObject.optJSONObject("data");
|
if (TITLE != null && TITLE.size() > 0) {
|
TITLE.clear();
|
}
|
navBgPicture = json.optString("bgPicture");
|
|
for (int i = 0; i < json.optJSONArray("list").length() + 1; i++) {
|
Map<String, String> map = new HashMap<>();
|
map.put("name", i == 0 ? "精选" : ((JSONObject) json.optJSONArray("list").get(i - 1)).optString("name"));
|
map.put("id", i == 0 ? "0" : ((JSONObject) json.optJSONArray("list").get(i - 1)).optInt("id") + "");
|
TITLE.add(map);
|
// fragments.add(new FragmentBrandFragment());
|
}
|
|
DiskLruCache.Editor editor = cache.edit(getKey("getBrandType"));
|
editor.set(0, jsonObject.optJSONObject("data").optJSONArray("list").toString());
|
editor.commit();
|
//存入数据库
|
if (TITLE.size() > 0) {
|
// setBranSqldata();
|
}
|
adapter.notifyDataSetChanged();
|
indicator.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {//失败
|
super.onFailure(statusCode, headers, responseString, throwable);
|
if (TITLE.size() == 0) {
|
if (NetUtils.getNetworkState(tv_middle.getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
requestState(3);
|
} else {
|
requestState(2);
|
}
|
} else {
|
if (NetUtils.getNetworkState(tv_middle.getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
Toast.makeText(tv_middle.getContext(), "网络未连接,请检测网络设置", Toast.LENGTH_SHORT).show();
|
} else {
|
Toast.makeText(tv_middle.getContext(), "网络连接异常,请检测网络设置", Toast.LENGTH_SHORT).show();
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
dpdismiss();//关闭
|
}
|
});
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
/**
|
* 缓冲
|
*/
|
private void waitinquire() {
|
if (pd == null) {
|
pd = new ShapeLoadingDialog.Builder(getActivity()).build();
|
}
|
pd.show();
|
}
|
|
/**
|
* 缓冲关闭
|
*/
|
private void dpdismiss() {
|
if (pd != null && pd.isShowing())
|
pd.dismiss();
|
}
|
|
private void requestState(int state) {
|
dpdismiss();//关闭
|
ll_no_data_rf.setVisibility(state == 1 ? 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);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
if (mChangeHelper != null) {
|
mChangeHelper.registerReceiver();
|
}
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
if (mChangeHelper != null) {
|
mChangeHelper.unregisterReceiver();
|
}
|
dpdismiss();
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
dpdismiss();
|
OkHttpUtils.getInstance().cancelTag(tag1);
|
}
|
}
|