OnFinshListener:
public interface OnFinshListener {
void setSucess(Bean bean);
}
Showmodelr:
public interface Showmodelr {
void getData(OnFinshListener listener);
}
ShowmodlerImpl:
public class ShowmodlerImpl implements Showmodelr{
@Override
public void getData(final OnFinshListener listener) {
String url="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
//AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
asyncHttpClient.get(url, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
Gson gson = new Gson();
Bean bean = gson.fromJson(responseString, Bean.class);
if(listener!=null){
listener.setSucess(bean);
}
}
});
/* OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
final Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
Gson gson = new Gson();
Bean bean = gson.fromJson(json, Bean.class);
if(listener!=null){
listener.onSueccess(bean);
}
}
});*/
}
}
ShowPlater :
public interface ShowPlater {
void relevance();
}
ShowPlaterImpl:
public class ShowPlaterImpl implements ShowPlater, OnFinshListener{
private final ShowmodlerImpl showmodler;
ShowVieww showView;
public ShowPlaterImpl(ShowVieww showView){
this.showView=showView;
showmodler = new ShowmodlerImpl();
}
@Override
public void relevance() {
showmodler.getData(this);
}
@Override
public void setSucess(Bean bean) {
showView.showData(bean);
}
}
ShowVieww :
public interface ShowVieww {
void showData(Bean bean);
}
MyAdpter:
public class MyAdpter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private Context context;
private Bean bean;
public MyAdpter(Context context, Bean bean){
this.context=context;
this.bean=bean;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.item, null);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyViewHolder holde=(MyViewHolder)holder;
List<Bean.DataBean> data = bean.getData();
Bean.DataBean dataBean = data.get(position);
String title = dataBean.getTITLE();
String imageurl = dataBean.getIMAGEURL();
Picasso.with(context).load(imageurl).placeholder(R.mipmap.ic_launcher).into(holde.iv);
holde.tv.setText(title);
}
@Override
public int getItemCount() {
return bean.getData().size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
private ImageView iv;
private TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
iv=itemView.findViewById(R.id.iv);
tv=itemView.findViewById(R.id.tv);
}
}
}
Main:
public class MainActivity extends AppCompatActivity implements ShowView{
private String url ="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
private RecyclerView rlr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
rlr = (RecyclerView) findViewById(R.id.rlv);
//设置成布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rlr.setLayoutManager(linearLayoutManager);
//p关联v
ShowPresenterImpl presenter = new ShowPresenterImpl(this);
//p关联m 做网络请求
presenter.relevance();
}
@Override
public void showData(News news) {
MyAdapter adapter = new MyAdapter(this,news);
rlr.setAdapter(adapter);
}
}
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:design:26.0.0-alpha1'