MVp

接下来和大家分享一下我使用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);
            }
        });

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




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值