//列表適配器
package soexample.umeng.com.one_week_test.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import soexample.umeng.com.one_week_test.R;
import soexample.umeng.com.one_week_test.bean.MyData;
import soexample.umeng.com.one_week_test.utils.GlideUtils;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder> {
private List<MyData.ResultBean> mList;
private Context mContext;
public MyAdapter(List<MyData.ResultBean> mList, Context mContext) {
this.mList = mList;
this.mContext = mContext;
}
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);
Holder holder = new Holder(v);
return holder;
}
@Override
public void onBindViewHolder(@NonNull Holder holder, final int i) {
GlideUtils.loadImage(mList.get(i).getMasterPic(), holder.mImage);
holder.mText.setText(mList.get(i).getCommodityName() + "");
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (itemClick != null) {
itemClick.setOnItemClick(i);
}
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
public class Holder extends RecyclerView.ViewHolder {
@BindView(R.id.Item_Image)
ImageView mImage;
@BindView(R.id.Item_Text)
TextView mText;
public Holder(@NonNull View itemView) {
super(itemView);
bind = ButterKnife.bind(this, itemView);
}
}
private Unbinder bind;
public void unBinder() {
if (bind != null) {
bind.unbind();
}
}
public interface ItemClick {
void setOnItemClick(int position);
}
private ItemClick itemClick;
public void setItemClick(ItemClick itemClick) {
this.itemClick = itemClick;
}
}
//二維碼掃描
package soexample.umeng.com.one_week_test.fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import soexample.umeng.com.one_week_test.R;
public class HomeFragment extends Fragment {
@BindView(R.id.Sao_Image)
ImageView SaoImage;
@BindView(R.id.Edit_Text)
EditText mEditText;
@BindView(R.id.Sheng_Btn)
Button ShengBtn;
@BindView(R.id.Home_Image)
ImageView HomeImage;
Unbinder unbinder;
private View mView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_home, container, false);
unbinder = ButterKnife.bind(this, mView);
EventBus.getDefault().register(this);
return mView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
@OnClick({R.id.Sao_Image, R.id.Sheng_Btn})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.Sao_Image:
Intent intent = new Intent(getActivity(), CaptureActivity.class);
startActivityForResult(intent, 1);
break;
case R.id.Sheng_Btn:
String content = mEditText.getText().toString().trim();
if (TextUtils.isEmpty(content)) {
Toast.makeText(getContext(), "內容不能爲空", Toast.LENGTH_SHORT).show();
} else {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xiao_icon);
Bitmap image = CodeUtils.createImage(content, 300, 300, bitmap);
HomeImage.setImageBitmap(image);
}
break;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == getActivity().RESULT_OK) {
String result_string = data.getStringExtra("result_string");
Log.e("result_string", result_string);
EventBus.getDefault().post(result_string);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getInfo(String info) {
}
}
//列表
package soexample.umeng.com.one_week_test.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import soexample.umeng.com.one_week_test.R;
import soexample.umeng.com.one_week_test.adapter.MyAdapter;
import soexample.umeng.com.one_week_test.bean.MyData;
import soexample.umeng.com.one_week_test.contart.IContart;
import soexample.umeng.com.one_week_test.presenter.PresenterImpl;
/**
* description: lvxinxin
* author: 呂新新
* date: 2019/12/2 14:50
* update: $date$
*/
public class ItemFragment extends Fragment implements IContart.IView {
@BindView(R.id.Recy)
RecyclerView Recy;
Unbinder unbinder;
private View mView;
private PresenterImpl presenter;
private List<MyData.ResultBean> mList = new ArrayList<>();
private MyAdapter mAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_item, container, false);
presenter = new PresenterImpl();
presenter.onAttchView(this);
EventBus.getDefault().register(this);
unbinder = ButterKnife.bind(this, mView);
Recy.setLayoutManager(new LinearLayoutManager(getContext()));
mAdapter = new MyAdapter(mList, getContext());
Recy.setAdapter(mAdapter);
return mView;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getInfo(String info) {
presenter.startRequest(info);
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
@Override
public void onSuccess(String jsonStr) {
Gson gson = new Gson();
MyData myData = gson.fromJson(jsonStr, MyData.class);
mList.addAll(myData.getResult());
mAdapter.notifyDataSetChanged();
}
@Override
public void onError(String error) {
}
}
//工具類
package soexample.umeng.com.one_week_test.utils;
import android.os.Handler;
import android.os.Message;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
/**
* description: lvxinxin
* author: 呂新新
* date: 2019/12/2 14:37
* update: $date$
*/
public class OKHttpUtils {
private OkHttpClient mOkHttpClient;
private HttpLoggingInterceptor interceptor;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1://成功
mCallback.onSuccess(msg.obj.toString());
break;
case 2://失敗
mCallback.onError(msg.obj.toString());
break;
}
}
};
private OkCallback mCallback;
//構造函數做一些初始化的操作
private OKHttpUtils() {
//添加了日誌攔截器
interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
mOkHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
}
private static class OkHolder {
private static final OKHttpUtils utils = new OKHttpUtils();
}
public static OKHttpUtils getInstance() {
return OkHolder.utils;
}
//同步的get請求
public void syncGet(final String url, OkCallback callback) {
mCallback = callback;
new Thread(new Runnable() {
@Override
public void run() {
Request request = new Request.Builder().url(url).build();
String jsonStr = null;
try {
jsonStr = mOkHttpClient.newCall(request).execute().body().string();
mHandler.sendMessage(mHandler.obtainMessage(0, jsonStr));
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
//同步的Post請求
public void syncPost(String url, FormBody formBody) throws IOException {
Request request = new Request.Builder().url(url).method("Post", formBody).build();
mOkHttpClient.newCall(request).execute().body().string();
}
//異步的Get請求
public void asyncGet(String url, OkCallback callback) {
mCallback = callback;
Request request = new Request.Builder().url(url).build();
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
mHandler.sendMessage(mHandler.obtainMessage(2, e.getMessage()));
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
mHandler.sendMessage(mHandler.obtainMessage(1, response.body().string()));
}
});
}
//異步的Post請求
public void asyncPost(String url, FormBody formBody, OkCallback callback) {
mCallback = callback;
Request request = new Request.Builder().method("POST", formBody).url(url).build();
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
mHandler.sendMessage(mHandler.obtainMessage(2, e.getMessage()));
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
mHandler.sendMessage(mHandler.obtainMessage(1, response.body().string()));
}
});
}
public interface OkCallback {
void onSuccess(String jsonStr);
void onError(String error);
}
}
//主界面
package soexample.umeng.com.one_week_test;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import soexample.umeng.com.one_week_test.base.BaseActivity;
import soexample.umeng.com.one_week_test.base.BasePresenter;
import soexample.umeng.com.one_week_test.fragment.HomeFragment;
import soexample.umeng.com.one_week_test.fragment.ItemFragment;
import soexample.umeng.com.one_week_test.pageradapter.MyPagerAdapter;
import soexample.umeng.com.one_week_test.presenter.PresenterImpl;
public class MainActivity extends BaseActivity {
@BindView(R.id.vp)
ViewPager mVp;
@BindView(R.id.Tab_layout)
TabLayout mTab;
private HomeFragment homeFragment;
private ItemFragment itemFragment;
private List<String> mTitle = new ArrayList<>();
private List<Fragment> mList = new ArrayList<>();
@Override
protected BasePresenter getPresenter() {
return new PresenterImpl();
}
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected void initViews() {
}
@Override
protected void startEncoding() {
initData();
mVp.setAdapter(new MyPagerAdapter(getSupportFragmentManager(), mTitle, mList));
mTab.setupWithViewPager(mVp);
}
private void initData() {
mTitle.add("首頁");
mTitle.add("列表");
homeFragment = new HomeFragment();
itemFragment = new ItemFragment();
mList.add(homeFragment);
mList.add(itemFragment);
}
@Override
public void onSuccess(String jsonStr) {
}
@Override
public void onError(String error) {
}
}
OkHttp具體使用方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.