package com.mugua.mgvideo.ui.main;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import android.util.Log;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.widget.ListView;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.RetainViewFragment;
|
import com.lcjian.library.content.ConnectivityChangeHelper;
|
import com.lcjian.library.content.ConnectivityChangeHelper.OnConnectivityChangeListener;
|
import com.lcjian.library.util.RefreshLayout;
|
import com.lcjian.library.util.cache.DiskLruCache;
|
import com.lcjian.library.util.common.StorageUtils;
|
import com.mugua.mgvideo.R;
|
import com.yeshi.base.utils.http.BasicTextHttpResponseHandler;
|
import com.mugua.mgvideo.MGVideoAPI;
|
import com.mugua.mgvideo.entity.GoodsInfo;
|
import com.mugua.mgvideo.ui.discover.GoodsAdapter;
|
import com.mugua.mgvideo.ui.recommend.SearchActivity;
|
|
/**
|
* 商城
|
*/
|
public class ShopFragment extends RetainViewFragment implements OnClickListener {
|
private TextView tv_no_network;
|
private TextView tv_top_left;
|
|
private ConnectivityChangeHelper mChangeHelper;
|
private ListView lv_res;
|
private RefreshLayout rl_discover;
|
private int warePage = 1;
|
|
private GoodsAdapter adapter;
|
private List<GoodsInfo> mList = new ArrayList<>();
|
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
try {
|
DiskLruCache.open(
|
new File(StorageUtils.getCacheDirectory(getActivity())
|
.toString(), "http"), getVersionNum(getActivity()),
|
1, 1024 * 1024);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_shop;
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
|
tv_no_network = (TextView) contentView.findViewById(R.id.tv_no_network);
|
tv_top_left = (TextView) contentView.findViewById(R.id.tv_top_bar_left);
|
tv_top_left.setVisibility(View.GONE);
|
tv_no_network.setOnClickListener(this);
|
contentView.findViewById(R.id.tv_top_bar_left).setOnClickListener(this);
|
mChangeHelper = new ConnectivityChangeHelper(
|
tv_no_network.getContext(), new OnConnectivityChangeListener() {
|
|
@Override
|
public void onNetworkUnAvailable() {
|
tv_no_network.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onWiFiAvailable() {
|
tv_no_network.setVisibility(View.GONE);
|
}
|
|
@Override
|
public void onMobileAvailable() {
|
tv_no_network.setVisibility(View.GONE);
|
}
|
});
|
|
rl_discover = (RefreshLayout) contentView
|
.findViewById(R.id.rl_discover);
|
ProgressBar pb = new ProgressBar(tv_no_network.getContext());
|
rl_discover.setFooter(pb);
|
rl_discover
|
.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
mList.clear();
|
warePage = 1;
|
getGoodsList();
|
}
|
});
|
rl_discover.setOnLoadListener(new RefreshLayout.OnLoadListener() {
|
@Override
|
public void onLoad() {
|
warePage++;
|
getGoodsList();
|
}
|
});
|
lv_res = (ListView) contentView
|
.findViewById(R.id.lv_fragment_discover_res);
|
adapter = new GoodsAdapter(tv_no_network.getContext(), mList);
|
lv_res.setAdapter(adapter);
|
tv_no_network.post(new Runnable() {
|
@Override
|
public void run() {
|
getGoodsList();
|
}
|
});
|
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
mChangeHelper.registerReceiver();
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
mChangeHelper.unregisterReceiver();
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_go_search: {
|
Intent intent = new Intent(getActivity(), SearchActivity.class);
|
startActivity(intent);
|
}
|
break;
|
case R.id.tv_no_network: {
|
Intent intent = new Intent(Settings.ACTION_SETTINGS);
|
startActivity(intent);
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
/**
|
* 获取商品列表
|
*/
|
private void getGoodsList() {
|
SharedPreferences sp = tv_no_network.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
MGVideoAPI.getWareList(tv_no_network.getContext(), uid, warePage
|
+ "", new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers,
|
JSONObject jsonObject) throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
Gson gson = new GsonBuilder()
|
.setPrettyPrinting()
|
.setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.excludeFieldsWithoutExposeAnnotation().create();
|
List<GoodsInfo> list = gson.fromJson(jsonObject
|
.getJSONObject("Data").getJSONArray("data")
|
.toString(), new TypeToken<List<GoodsInfo>>() {
|
}.getType());
|
if (Integer.parseInt(jsonObject.optJSONObject("Data")
|
.optString("count")) > list.size()) {
|
rl_discover.isMore = true;
|
} else if (Integer.parseInt(jsonObject
|
.optJSONObject("Data").optString("count")) <= list
|
.size()) {
|
rl_discover.isMore = false;
|
}
|
mList.addAll(list);
|
adapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
rl_discover.setLoading(false);
|
rl_discover.setRefreshing(false);
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
Log.i("mResult", "请求失败");
|
rl_discover.isMore = false;
|
}
|
});
|
|
}
|
|
public static int getVersionNum(Context context) {
|
try {
|
PackageInfo pi = context.getPackageManager().getPackageInfo(
|
context.getPackageName(), 0);
|
return pi.versionCode;
|
} catch (NameNotFoundException e) {
|
e.printStackTrace();
|
return 1;
|
}
|
}
|
}
|