网络请求 Gson解析
来源:互联网 发布:淘宝怎么刷単赚钱 编辑:程序博客网 时间:2024/05/21 19:33
package cn.com.mynewokhttp.activity;import android.annotation.TargetApi;import android.app.ActivityOptions;import android.content.Intent;import android.os.Build;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import cn.com.mynewokhttp.R;public class MainActivity extends AppCompatActivity { private ImageView main_img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anims); animation.setDuration(3000); main_img.startAnimation(animation); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onAnimationEnd(Animation animation) { Intent intent = new Intent(MainActivity.this, TwoActivity.class); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle()); finish(); } @Override public void onAnimationRepeat(Animation animation) { } }); } private void initView() { main_img = (ImageView) findViewById(R.id.main_img); }}
第二个页面
package cn.com.mynewokhttp.activity;import android.annotation.TargetApi;import android.app.ProgressDialog;import android.os.Build;import android.os.Handler;import android.os.Message;import android.support.annotation.RequiresApi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.transition.Explode;import android.view.View;import android.widget.ProgressBar;import android.widget.Toast;import com.chanven.lib.cptr.PtrClassicFrameLayout;import com.chanven.lib.cptr.PtrDefaultHandler;import com.chanven.lib.cptr.PtrFrameLayout;import com.chanven.lib.cptr.loadmore.OnLoadMoreListener;import com.google.gson.Gson;import java.io.IOException;import java.util.ArrayList;import java.util.Timer;import java.util.TimerTask;import cn.com.mynewokhttp.R;import cn.com.mynewokhttp.adapter.MyAdapter;import cn.com.mynewokhttp.bean.Bean;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import static android.R.id.list;public class TwoActivity extends AppCompatActivity { private RecyclerView two_recycler; String url = "http://123.206.70.44:8080/atguigu/jsontest/test.json"; ArrayList<Bean.HotInfoBean> list = new ArrayList<>(); private MyAdapter ma; private ProgressBar ba; private Handler hand = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 999: initData(); break; } } }; private PtrClassicFrameLayout frame2; @TargetApi(Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); getWindow().setEnterTransition(new Explode().setDuration(2000)); getWindow().setExitTransition(new Explode().setDuration(2000)); initView(); hand.postDelayed(new Runnable() { @Override public void run() { ba.setVisibility(View.GONE); } }, 2000); initData(); } private void initData() { OkHttpClient client = new OkHttpClient.Builder().build(); Request request = new Request.Builder().url(url).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String str = response.body().string(); Gson gson = new Gson(); Bean bean = gson.fromJson(str, Bean.class); list.addAll(bean.getStringHotInfo()); runOnUiThread(new Runnable() { @Override public void run() { ma.notifyDataSetChanged(); } }); } }); } private void initView() { two_recycler = (RecyclerView) findViewById(R.id.two_recycler); two_recycler.setLayoutManager(new GridLayoutManager(this, 1)); ba = (ProgressBar) findViewById(R.id.pro);// frame2 = (PtrClassicFrameLayout)findViewById(R.id.framelayout); ma = new MyAdapter(this, list); two_recycler.setAdapter(ma); }}第三个页面
package cn.com.mynewokhttp.activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import com.youth.banner.Banner;import java.util.ArrayList;import cn.com.mynewokhttp.GlideImageLoader;import cn.com.mynewokhttp.R;public class ThreeActivity extends AppCompatActivity { private Banner banner; private TextView three_tv; private ArrayList<String> images = new ArrayList<>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_three); initView(); initData(); } private void initData() { Intent in = getIntent(); three_tv.setText(in.getStringExtra("name")); String im1 = in.getStringExtra("im1"); String im2 = in.getStringExtra("im2"); String im3 = in.getStringExtra("im3"); images.add(im1); images.add(im2); images.add(im3); banner.setImageLoader(new GlideImageLoader()); banner.setImages(images); banner.start(); } private void initView() { banner = (Banner) findViewById(R.id.three_pager); three_tv = (TextView) findViewById(R.id.three_tv); }}
适配器
package cn.com.mynewokhttp.adapter;import android.content.Context;import android.content.Intent;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.bumptech.glide.Glide;import java.util.ArrayList;import cn.com.mynewokhttp.R;import cn.com.mynewokhttp.activity.ThreeActivity;import cn.com.mynewokhttp.bean.Bean;/** * Created by Administrator on 2017/7/5. */public class MyAdapter extends RecyclerView.Adapter{ Context context; ArrayList<Bean.HotInfoBean> list; MyHolder mh; public MyAdapter(Context context, ArrayList<Bean.HotInfoBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.two_item,null); return new MyHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { mh = (MyHolder) holder; mh.itemName.setText(list.get(position).stringName); mh.itemPrv.setText(list.get(position).stringProductId); mh.two_type1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,"恩!",Toast.LENGTH_SHORT).show(); } }); Glide.with(context).load(list.get(position).stringFigure).into(mh.itemImg); mh.two_type2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent in = new Intent(context, ThreeActivity.class); in.putExtra("name", list.get(position).stringName); in.putExtra("im1", list.get(position).stringFigure); in.putExtra("im2", list.get(position).stringFigure1); in.putExtra("im3", list.get(position).stringFigure2); Toast.makeText(context,"到详情界面拉@",Toast.LENGTH_SHORT).show(); context.startActivity(in); } }); /*mh.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });*/ } @Override public int getItemCount() { return list.size(); } static class MyHolder extends RecyclerView.ViewHolder { TextView itemName,itemPrv; ImageView itemImg; Button two_type1,two_type2; public MyHolder(View itemView) { super(itemView); itemName = (TextView) itemView.findViewById(R.id.item_name); itemPrv = (TextView) itemView.findViewById(R.id.item_prv); itemImg = (ImageView) itemView.findViewById(R.id.item_img); two_type1 = (Button) itemView.findViewById(R.id.two_type1); two_type2 = (Button) itemView.findViewById(R.id.two_type2); } }}
Bean类用自己的 。
package cn.com.mynewokhttp;import android.content.Context;import android.net.Uri;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.youth.banner.loader.ImageLoader;/** * Created by tian on 2017/7/5. */public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { /** 注意: 1.图片加载器由自己选择,这里不限制,只是提供几种使用方法 2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器, 传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行, 切记不要胡乱强转! */ //Glide 加载图片简单用法 Glide.with(context).load(path).into(imageView); //Picasso 加载图片简单用法 // Picasso.with(context).load(path).into(imageView); //用fresco加载图片简单用法,记得要写下面的createImageView方法 Uri uri = Uri.parse((String) path); imageView.setImageURI(uri); } /*//提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建 @Override public ImageView createImageView(Context context) { //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context); return simpleDraweeView; }*/}
第一布局
省略
第二布局
<TextView android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="电子商城"/><ProgressBar android:id="@+id/pro" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center" /> <android.support.v7.widget.RecyclerView android:id="@+id/two_recycler" android:layout_width="match_parent" android:layout_height="match_parent" />
第二子布局
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="horizontal"> <ImageView android:layout_marginTop="30dp" android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/item_img" android:src="@mipmap/ic_launcher"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_marginTop="20dp" android:id="@+id/item_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" android:textSize="20sp" android:textStyle="bold"/> <TextView android:layout_marginTop="20dp" android:id="@+id/item_prv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="$$$$$$$$$$$$$" android:textSize="15sp" android:textStyle="bold"/> <LinearLayout android:layout_width="wrap_content" android:orientation="horizontal" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/two_type1" android:background="#FFFFFF" android:text="TYPE1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/two_type2" android:background="#FFFFFF" android:text="TYPE2"/> </LinearLayout> </LinearLayout>
第三布局 详情页面
<com.youth.banner.Banner android:id="@+id/three_pager" android:layout_width="match_parent" android:layout_height="400dp" /><TextView android:id="@+id/three_tv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="5dp" android:gravity="center" android:text="content" android:textSize="30dp" />
最后 需要的导包
compile 'com.android.support:recyclerview-v7:25.2.0'compile 'com.youth.banner:banner:1.4.9'compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.github.bumptech.glide:glide:3.5.2'compile 'com.google.code.gson:gson:2.8.1'compile 'com.chanven.lib:cptr:1.1.0'compile 'com.squareup.okhttp3:okhttp:3.8.1'还有网络权限 千万别忘了
阅读全文
1 0
- 网络请求 Gson解析
- 网络请求(XUtils)+JSON解析(Gson)
- 使用HttpURLConnection请求Gson网络解析数据
- 【框架】网络请求+Gson解析--Retrofit 2
- SlidingMenu ViewPager Fragment GSON 网络解析 网络请求 ListView
- banner+Recyclerview+Gson+okhtto请求网络数据+解析
- 网络数据gson解析
- AsynTask异步任务+HttpURLConnection网络请求+Gson解析数据+添加到sqlite数据库展示数据
- 利用OkHttp请求网络,利用Gson解析Json数据中遇到的问题。
- PullToRefreshListView 上拉加载,下拉刷新 + AsyncTask 网络请求 + gson 自动解析
- HttpURLConnection请求数据及Gson解析
- httpclient请求数据和gson的解析
- Volley发起网络请求及Gson
- Android使用okhttpfinal+gson实现网络请求
- 从零开始搞懂Android网络请求——JSON数据的解析与Gson框架的使用
- Android网络数据解析之Gson
- 网络获取gson数据解析(老办法)
- 网络请求数据解析
- 3174: [Tjoi2013]拯救小矮人
- [awk]练习2
- Vim 插件管理器概览
- Windows15
- CentOS7 安装Redis
- 网络请求 Gson解析
- ORACLE常用数据查询
- Windows16
- Gear VR在Unity下的开发与调试
- 计算机网络复习(Ch2物理层)
- Python标准库-turtle
- 洛谷3702,递推+矩阵乘法优化
- WebStorm基本使用
- 第三方邮件客户端收取163邮件问题(收邮件NO Select Unsafe Login. Please contact kefu解决办法)