添加依赖
implementation 'com.facebook.fresco:fresco:0.14.1'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
权限
<uses-permission android:name="android.permission.INTERNET"/>
清单文件:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
注册
<application
android:name=".base.MyApp">
</application>
ok封装就不写了,其他博客里边有
model:
public class NewsModel {
public static final String NEWS_URL = "http://result.eolinker.com/umIPmfS6c83237d9c70c7c9510c9b0f97171a308d13b611?uri=homepage";
public void getData(ICallBack iCallBack){
OkHttpUtils.getInstance().doGet(NEWS_URL,iCallBack);
}
}
view:
public interface NewsView {
void getListData(News.DataBean data);
void failed(Exception e);
}
presenter
public class NewsPresent {
private NewsModel mModel;
private NewsView mView;
public NewsPresent(NewsView view) {
mView = view;
mModel = new NewsModel();
}
public void getData(){
mModel.getData(new ICallBack() {
@Override
public void success(String result) {
Gson gson = new Gson();
News news = gson.fromJson(result, News.class);
News.DataBean data = news.getData();
mView.getListData(data);
}
@Override
public void failed(Exception e) {
mView.failed(e);
}
});
}
public void kills(){
if (mView != null){
mView = null;
}
if (mModel != null){
mModel = null;
}
}
}
activity:
public class MainActivity extends AppCompatActivity implements NewsView {
private ViewPager vp;
private RecyclerView rlv;
private NewsPresent mPresent = new NewsPresent(this);
private VpAdapter adapter;
private List<News.DataBean.Ad1Bean> mAd1;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
int currentItem = vp.getCurrentItem();
if (currentItem == mAd1.size() - 1) {
currentItem = 0;
} else {
currentItem++;
}
vp.setCurrentItem(currentItem);
sendEmptyMessageDelayed(0, 2000);
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
mPresent.getData();
}
private void initView() {
vp = findViewById(R.id.vp);
}
@Override
public void getListData(News.DataBean data) {
mAd1 = data.getAd1();
adapter = new VpAdapter(mAd1, MainActivity.this);
vp.setAdapter(adapter);
mHandler.sendEmptyMessageDelayed(0, 2000);
}
@Override
public void failed(Exception e) {
Toast.makeText(MainActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresent.kills();
if (mPresent != null) {
mPresent = null;
}
}
}
adapter
public class VpAdapter extends PagerAdapter {
private List<News.DataBean.Ad1Bean> mList;
private Context mContext;
public VpAdapter(List<News.DataBean.Ad1Bean> list, Context context) {
mList = list;
mContext = context;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
SimpleDraweeView sdv = new SimpleDraweeView(mContext);
sdv.setImageURI(mList.get(position).getImage());
container.addView(sdv);
return sdv;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}