RecyclerView的简单使用

写项目前需做好依赖、权限等准备工作。项目涉及MVP框架搭建,包括view层、model层及接口、实现类,Presenter层及接口、实现类,还包含MainActivity和Adapter。

首先写项目之前,做好一切准备,比如依赖,权限,

1.MVP框架搭建                           

view层

public interface ZhanView {

    void zSuccess(String data);
    void zFail();

}

model层

接口

public interface ZhanModel {

    interface CallbackListener{
        void success(String data);
        void fail();

    }

    //获取数据的方法
    void getData(CallbackListener listener);


}

   model实现类

public class ZhanModelIml implements ZhanModel {
    @Override
    public void getData(final CallbackListener listener) {
        //请求数据
        new HttpHelper(new HttpHelper.HttpListner() {
            @Override
            public void success(String data) {
                listener.success(data);
            }

            @Override
            public void fail() {

            }
        });get("http://v.juhe.cn/toutiao/index?type=22&key=b6c3b1850433a790be8f9c1bef28e424");


    }



}

Presenter层

接口

public interface ZhanPresenter {



    //展示方法
    void doData();
}

实现类

public class ZhanPresenterIml implements ZhanPresenter, ZhanModel.CallbackListener {

   private ZhanModel zhanModel;
   private ZhanView zhanView;

    public ZhanPresenterIml(ZhanModel zhanModel, ZhanView zhanView) {
        this.zhanModel = zhanModel;
        this.zhanView = zhanView;
    }

    @Override
    public void doData() {
        zhanModel.getData(this);
    }

    @Override
    public void success(String data) {
        zhanView.zSuccess(data);
    }

    @Override
    public void fail() {
        zhanView.zFail();
    }
}

  2.MainActivity

public class MainActivity extends AppCompatActivity implements ZhanView {

    private ZhanPresenterIml zpi;
    private SmartRefreshLayout sma;
    private ArrayList<JsonBean.Result.DataBean> list = new ArrayList<>();
    private MyAdapter adapter;
    private XRecyclerView mr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mr = findViewById(R.id.recycler);
        //设置布局管理器
        LinearLayoutManager manager = new LinearLayoutManager(this);
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        mr.setLayoutManager(manager);
        zpi = new ZhanPresenterIml(new ZhanModelIml(),this);
        zpi.doData();
        adapter = new MyAdapter(this);

    }

    @Override
    public void zSuccess(String data) {
        Gson gson =new Gson();
        JsonBean jsonBean = gson.fromJson(data, JsonBean.class);
        list = jsonBean.getResult().getData();
        Log.i("aaa",list.toString());
        adapter = new MyAdapter(this);
        adapter.setdata(list);
    }

    @Override
    public void zFail() {

    }
}

3.Adapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    private Context context;
    private ArrayList<JsonBean.Result.DataBean> list = new ArrayList<>();
    private MyViewHolder holder;

    public void setdata(ArrayList<JsonBean.Result.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

    public MyAdapter(Context context) {
        this.context = context;
    }

    @NonNull
    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context, R.layout.item, null);
        holder = new MyViewHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder myViewHolder, int i) {
        String title = list.get(i).getTitle();
        holder.text1.setText(title);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }


    public class MyViewHolder extends RecyclerView.ViewHolder {

        ImageView image;
        TextView text1;
        TextView text2;
        TextView text3;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            image = (ImageView) itemView.findViewById(R.id.image);
            text1 = (TextView) itemView.findViewById(R.id.text1);
            text2 = (TextView) itemView.findViewById(R.id.text2);
            text3 = (TextView) itemView.findViewById(R.id.text3);

        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值