okhttp请求+recycleview+网络是否连接成功

来源:互联网 发布:材料库存软件 编辑:程序博客网 时间:2024/06/14 11:13
public class MainActivity extends AppCompatActivity {    private String url = "url地址";    private RecyclerView recyclerView;    private RecyclerAdapter adapter;    private List<bean类> list = new ArrayList<>();    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            String s = (String) msg.obj;            Gson gson = new Gson();            ViewBean bean = gson.fromJson(s, ViewBean.class);            list.addAll(bean.list);            adapter.notifyDataSetChanged();            Log.e("-----------------", "---" + list.size());            adapter.setOnItemClickLitener(new RecyclerAdapter.OnItemClickLitener() {                @Override                public void onItemClick(View view, int position) {                    Toast.makeText(MainActivity.this, list.get(position),                            Toast.LENGTH_SHORT).show();                }            });        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recyclerView = (RecyclerView) findViewById(R.id.recycle);        boolean conn = Connutlis.isConn(this);      //判断网络是否连接成功        if(!conn){      //没有网络           Connutlis.setNetworkMethod(this);            loadData();        }else {            loadData();        }        //设置recycler管理器        recyclerView.setLayoutManager(new LinearLayoutManager(this));       //分割线       recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));        adapter = new RecyclerAdapter(this, list);       //设置适配器      recyclerView.setAdapter(adapter);    }    //okhttp请求    private void loadData() {        OkHttpClient mOkHttp = new OkHttpClient.Builder()                .connectTimeout(10, TimeUnit.SECONDS)                .readTimeout(20, TimeUnit.SECONDS)                .build();        Request request = new Request.Builder()                .url(url)                .get()                .build();        Call call = mOkHttp.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String s = response.body().string();                Message mes = Message.obtain();                mes.obj = s;                handler.sendMessage(mes);            }        });    }}

//////////////////////////

设置item点击首先在style样式中加入

加入selector
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true" android:drawable="@color/colorAccent"></item>    <item android:drawable="@color/colorPrimary"></item></selector>
加入分割线:
首先在values中加入:
<item name="android:listDivider">@drawable/divider</item>
设置shape样式:
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <solid android:color="#f00"></solid>    <size android:height="3dp"></size></shape>

RecyclerAdapter 类:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {    private MyViewHolder viewHolder;    private Context context;    private List<ViewBean.ListBean> list;    public RecyclerAdapter(Context context, List<ViewBean.ListBean> list) {        this.context = context;        this.list = list;    }    public interface OnItemClickLitener    {        void onItemClick(View view, int position);    }    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)    {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public RecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item, null);        viewHolder = new MyViewHolder(view);        return viewHolder;    }    @Override    public void onBindViewHolder(RecyclerAdapter.MyViewHolder holder, int position) {         list.get(position);               // 如果设置了回调,则设置点击事件        if (mOnItemClickLitener != null)        {            holder.itemView.setOnClickListener(new View.OnClickListener()            {                @Override                public void onClick(View v)                {                                       mOnItemClickLitener.onItemClick(viewHolder.itemView, position);                    ObjectAnimator                            .ofFloat(v, "rotationX", 0.0F, 360.0F)                            .setDuration(500)                            .start();                }            });        }    }    @Override    public int getItemCount() {        return list == null ? 0 : list.size();    }    public class MyViewHolder extends RecyclerView.ViewHolder {                public MyViewHolder(View itemView) {            super(itemView);                   }    }}


//////////////////////
网络连接成功与否:public class Connutlis {    /*         * 判断网络连接是否已开         *true 已打开  false 未打开         * */    public static boolean isConn(Context context) {        boolean bisConnFlag = false;        ConnectivityManager conManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo network = conManager.getActiveNetworkInfo();        if (network != null) {            bisConnFlag = conManager.getActiveNetworkInfo().isAvailable();        }        return bisConnFlag;    }    /*  * 打开设置网络界面  * */    public static void setNetworkMethod(final Context context){        //提示对话框        AlertDialog.Builder builder=new AlertDialog.Builder(context);        builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // TODO Auto-generated method stub                Intent intent=null;                //判断手机系统的版本  即API大于10 就是3.0或以上版本                if(android.os.Build.VERSION.SDK_INT>10){                    intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);                }else{                    intent = new Intent();                    ComponentName component = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");                    intent.setComponent(component);                    intent.setAction("android.intent.action.VIEW");                }                context.startActivity(intent);            }        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // TODO Auto-generated method stub                dialog.dismiss();            }        }).show();    }}