MVp
来源:互联网 发布:linux运维工程师工资 编辑:程序博客网 时间:2024/06/06 01:39
接下来和大家分享一下我使用MVP的项目流程:
首先是创建各个文件包:Activity、adapter、view、bean、model、okhttp、utils、presenter
接下来就是各个文件包中的使用:
view包中的类的显示作用:创建接口并调用方法
public interface RecyView { void showRecy(RlvBean rb);// int getID();}presenter包的作用:创建类
Context context; RecyView view; IRecyModel model; public Recypresenter(Context context, RecyView view) { this.context = context; this.view = view; model=new RecyModel(); } public void showRecy(){ model.recy(new OnUiCallback() { @Override public void onSuccess(String result) throws IOException { RlvBean rb=new Gson().fromJson(result,RlvBean.class); view.showRecy(rb);
还有就是拦截器OKHttp的实现了
model包
实现一个接口创建显示方法
void recy(OnUiCallback callback);
创建一个类实现上个接口用拦截器调用需要请求的数据
OkHttpUtils.getInstance().doGet("http://news-at.zhihu.com/api/4/news/before/20131119", (okhttp3.Callback) callback);
Bean包对要请求的数据进行封装与解析
Adapter适配器对数据进行配置
public class RlvAdapter extends RecyclerView.Adapter<RlvAdapter.MyrvHolder> { Context context; RlvBean rb; public RlvAdapter(Context context, RlvBean rb) { this.context = context; this.rb = rb; } List<View> listHeader = new ArrayList<>(); public void addHeader(View view){ listHeader.add(view); } public interface OnItemClickListener { public void onItemOnClick(View view,int postion); } 点击事件 OnItemClickListener listener; public void setOnItemClickListener(OnItemClickListener listener){ this.listener = listener; } @Override public MyrvHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.xlv_item, null); MyrvHolder holder = new MyrvHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemOnClick(view, (Integer) view.getTag()); } }); return holder; } @Override public void onBindViewHolder(MyrvHolder holder, int position) { holder.itemView.setTag(position); holder.id.setText(rb.getStories().get(position).getGa_prefix()); holder.title.setText(rb.getStories().get(position).getTitle()); Glide.with(context).load(rb.getStories().get(position).getImages().get(0)).into(holder.iv); } @Override public int getItemCount() { return rb.getStories().size(); } class MyrvHolder extends RecyclerView.ViewHolder{ ImageView iv; TextView title; TextView id; public MyrvHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.xlv_iv); title = (TextView) itemView.findViewById(R.id.xlv_title); id = (TextView) itemView.findViewById(R.id.xlv_id); } }}
最后就是主方法中的设置了
public class MainActivity extends AppCompatActivity implements RecyView { private XRecyclerView rlv; Recypresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); presenter=new Recypresenter(this,this); presenter.showRecy(); } private void initView() { rlv = (XRecyclerView) findViewById(R.id.xrlv); LinearLayoutManager manager = new LinearLayoutManager(this); rlv.setLayoutManager(manager); rlv.setLoadingMoreEnabled(true); } @Override public void showRecy(RlvBean rb) { RlvAdapter adapter = new RlvAdapter(MainActivity.this, rb); rlv.setAdapter(adapter); adapter.setOnItemClickListener(new RlvAdapter.OnItemClickListener() { @Override public void onItemOnClick(View view, int postion) { Toast.makeText(MainActivity.this,"欢迎订购", Toast.LENGTH_SHORT).show(); Intent intent=new Intent(MainActivity.this,CarActivity.class); startActivity(intent); } });
好了,这次的分享就是这些了。
阅读全文
0 0