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);            }        });

好了,这次的分享就是这些了。