首先写项目之前,做好一切准备,比如依赖,权限,
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);
}
}
}