/**
* 封装工具类MyTask,用于异步接受数据*/package com.example.utile;
import android.os.AsyncTask;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
/**
* Created by Administrator on 2018/1/6 0006.
*/
public class MyTask extends AsyncTask<String,Void,String> {
//把接口定义出来
private ICallBacks icallBacks;
//创建该类,必须传进一个构造。
public MyTask(ICallBacks icallBacks) {
this.icallBacks = icallBacks;
}
@Override
protected String doInBackground(String... strings) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(strings[0]);
try {
HttpResponse response = httpClient.execute(httpGet);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
icallBacks.getJson(s);
}
public interface ICallBacks{
void getJson(String s);
}
}
/**
* 判断是否有网络
*/
public class NetUtils {
//判断有无网络的方法
public static boolean isConn(Context context){
//1.得到系统服务
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//2.得到网络信息类对象-需要添加权限
//清单文件配置:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
NetworkInfo info = manager.getActiveNetworkInfo();
//3.进行判断
if(info!=null && info.isAvailable()){//已经连接网络
return true;
}else{
return false;
}
}
//如果没有网络的情况下,弹出一个对话框,打开设置页面
public static void openNetDialog(final Context context){
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("没有网络,是否进行设置?");
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//跳转到系统设置页面-隐士跳转
Intent intent = null;
// 先判断当前系统版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);
}
});
builder.setNegativeButton("取消",null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
//viewPager和fragment
public class ShowActivity extends AppCompatActivity {
private ViewPager viewPager;
private ArrayList<Fragment> list;
private RadioGroup group;
private Button but1;
private Button but2;
private Button but3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
NetUtils netUtils = new NetUtils();
//调用是否有网络的方法,判断在往下进行
boolean b = netUtils.isConn(ShowActivity.this);
if(!b){
netUtils.openNetDialog(ShowActivity.this);
}
but1 = findViewById(R.id.but1);
but2 = findViewById(R.id.but2);
but3 = findViewById(R.id.but3);
group = findViewById(R.id.group);
viewPager = findViewById(R.id.viewpager);
list = new ArrayList<>();
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
});
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
group.check(R.id.but1);
break;
case 1:
group.check(R.id.but2);
break;
case 2:
group.check(R.id.but3);
break;
default:
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.but1:
viewPager.setCurrentItem(0);
break;
case R.id.but2:
viewPager.setCurrentItem(1);
break;
case R.id.but3:
viewPager.setCurrentItem(2);
break;
default:
break;
}
}
});
}
}
/** * 请求数据 */public class Fragment1 extends Fragment{
private XListView xlv;
private List<Jingdong.DataBean> list;
private List<Jingdong2.TuijianBean.ListBean> list2;
private List<Object> listObj = new ArrayList<>();
private String icon;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(list!=null&&list2!=null){
listObj.add(icon);
listObj.add(list);
listObj.add(list2);
MyAdapter myAdapter = new MyAdapter(getActivity(),listObj);
xlv.setAdapter(myAdapter);
handler.removeMessages(0);
}
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
xlv=view.findViewById(R.id.xlv);
xlv.setPullRefreshEnable(false);
xlv.setPullLoadEnable(false);
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
}
});
startTask();
return view;
}
public void startTask(){
MyTask myTask = new MyTask(new MyTask.ICallBacks() {
@Override
public void getJson(String json) {
Gson gson = new Gson();
Jingdong jingdong = gson.fromJson(json, Jingdong.class);
list = jingdong.getData();
}
});
MyTask myTask2 = new MyTask(new MyTask.ICallBacks() {
@Override
public void getJson(String json) {
Gson gson = new Gson();
Jingdong2 jingdong2 = gson.fromJson(json, Jingdong2.class);
icon = jingdong2.getData().get(0).getIcon();
list2 = jingdong2.getTuijian().getList();
}
});
myTask.execute("http://120.27.23.105/product/getCatagory");
myTask2.execute("http://120.27.23.105/ad/getAd");
handler.sendEmptyMessageDelayed(0,1000);
}
}
/** * 适配器 */
public class MyAdapter extends BaseAdapter{
private Context context;
private List<Object> listObj;
private final static int ONE = 0;
private final static int TWO = 1;
private final static int THREE = 2;
private DisplayImageOptions options;
public MyAdapter(Context context, List<Object> listObj) {
this.context = context;
this.listObj = listObj;
options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
.build();
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getCount() {
return listObj.size();
}
@Override
public Object getItem(int i) {
return listObj.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(i == 0){
ViewHolder holder;
if(view == null){
view = View.inflate(context,R.layout.item_one,null);
holder = new ViewHolder();
holder.imageView = view.findViewById(R.id.imageView);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
String url = (String)listObj.get(0);
ImageLoader.getInstance().displayImage(url,holder.imageView,options);
return view;
}else if(i == 1){
ViewHolder2 holder;
if(view == null){
view = View.inflate(context,R.layout.item_two,null);
holder = new ViewHolder2();
holder.gridView2 = view.findViewById(R.id.gridView);
view.setTag(holder);
}else {
holder = (ViewHolder2) view.getTag();
}
List<Jingdong.DataBean> list1 = (List<Jingdong.DataBean>)listObj.get(1);
Log.e("+++++++++++++++++",list1+"");
GridView1Adapter gridView1Adapter = new GridView1Adapter(context, list1);
holder.gridView2.setAdapter(gridView1Adapter);
return view;
}else {
ViewHolder3 holder;
if(view == null){
view = View.inflate(context,R.layout.item_three,null);
holder = new ViewHolder3();
holder.gridView3 = view.findViewById(R.id.gridView);
view.setTag(holder);
}else {
holder = (ViewHolder3) view.getTag();
}
List<Jingdong2.TuijianBean.ListBean> list2 = (List<Jingdong2.TuijianBean.ListBean>)listObj.get(2);
GridView2Adapter gridView2Adapter = new GridView2Adapter(context, list2);
holder.gridView3.setAdapter(gridView2Adapter);
return view;
}
}
public class ViewHolder{
ImageView imageView;
}
public class ViewHolder2{
GridView gridView2;
}
public class ViewHolder3{
GridView gridView3;
}
}
清单文件的配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />