这是一个小dome,用到了xutils,XListView,ImageLoader.
导包
com.nostra13.universalimageloader:universal-image-loader:1.9.5’
compile ‘com.google.code.gson:gson:2.8.1’
compile ‘org.xutils:xutils:3.5.0’
compile project(‘:xlistview’)在MainActivity里
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.viewpager)
private ViewPager viewpager;
@ViewInject(R.id.tablayout)
private TabLayout tablayout;
private Fragment[] my;
private String urlpath = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";
private List<Data.DataBean.ComicsBean> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
x.view().inject(this);
loadData();
}
private void loadData() {
RequestParams r = new RequestParams(urlpath);
x.http().get(r, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Data data = new Gson().fromJson(result, Data.class);
list = data.getData().getComics();
inittab();
}
private void inittab() {
// for (Data.DataBean.ComicsBean b : list) {
// tablayout.addTab(tablayout.newTab().setText(b.getTitle()));
// }
my = new Myfragment[list.size()];
viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
if (my[position] == null) {
Myfragment mm= (Myfragment) Myfragment.get(list.get(position).getId());
my[position]=mm;
}
return my[position];
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return list.get(position).getTitle();
}
});
tablayout.setupWithViewPager(viewpager);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
}
在Myfragment里
@ContentView(R.layout.myfragment)
public class Myfragment extends Fragment implements XListView.IXListViewListener {
private ImageLoader imageLoader;
@ViewInject(R.id.xlistview)
private XListView xlistview;
private Myadapter adapter;
private List<Data.DataBean.ComicsBean> list = new ArrayList<>();
public static Fragment get(int url) {
Myfragment fragement = new Myfragment();
Bundle bundle = new Bundle();
bundle.putInt("ss", url);
fragement.setArguments(bundle);
return fragement;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = x.view().inject(this, inflater, container);
Object ss = getArguments().get("ss");
adapter=new Myadapter(0);
xlistview.setAdapter(adapter);
xlistview.setPullLoadEnable(true);
xlistview.setPullRefreshEnable(true);
xlistview.setXListViewListener(this);
loadData();
return v;
}
private void loadData() {
RequestParams r = new RequestParams("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9");
x.http().get(r, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Data data = new Gson().fromJson(result, Data.class);
list = data.getData().getComics();
adapter.notifyDataSetChanged();
xlistviewstop();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
@Override
public void onRefresh() {
list.clear();
loadData();
xlistviewstop();
}
//关闭xlistview
private void xlistviewstop() {
xlistview.stopLoadMore();
//刷新完毕,关闭下拉刷新效果
xlistview.stopRefresh();
xlistview.setRefreshTime("刚刚");
}
@Override
public void onLoadMore() {
loadData();
xlistviewstop();
}
class Myadapter extends BaseAdapter {
int i;
public Myadapter(int i) {
this.i = i;
//创建默认的imageLoader配置参数
ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(getActivity());
//将configuration配置到imageloader中
imageLoader=ImageLoader.getInstance();
imageLoader.init(configuration);
}
@Override
public int getCount() {
return list.size();
}
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//设置下载的图片缓存是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在sd卡中
.bitmapConfig(Bitmap.Config.ARGB_8888)//设置图片的解码类型
.showImageOnLoading(R.mipmap.ic_launcher)//设置图片在下载期间显示的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片url为空或是错误的时候显示的图片
.showImageOnFail(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片
.build();//构建完成
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = View.inflate(getActivity(), R.layout.listv, null);
holder = new ViewHolder();
x.view().inject(holder, convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(list.get(position).getTitle());
imageLoader.displayImage(list.get(position).getCover_image_url(), holder.imageView, options);
return convertView;
}
class ViewHolder {
@ViewInject(R.id.title)
TextView textView;
@ViewInject(R.id.imageviews)
ImageView imageView;
}
}
}
data解析类,不需要在这个类浪费时间,安卓studio为我们准备了自动生成。
public class Data {
private int code;
private DataBean data;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static class DataBean {
private int timestamp;
private int since;
private List<ComicsBean> comics;
public int getTimestamp() {
return timestamp;
}
public void setTimestamp(int timestamp) {
this.timestamp = timestamp;
}
public int getSince() {
return since;
}
public void setSince(int since) {
this.since = since;
}
public List<ComicsBean> getComics() {
return comics;
}
public void setComics(List<ComicsBean> comics) {
this.comics = comics;
}
public static class ComicsBean {
private int info_type;
private boolean can_view;
private int updated_count;
private String label_color;
private String cover_image_url;
private int storyboard_cnt;
private int created_at;
private String title;
private String url;
private int likes_count;
private int updated_at;
private int selling_kk_currency;
private int comments_count;
private String label_text;
private int zoomable;
private boolean is_free;
private int push_flag;
private TopicBean topic;
private int shared_count;
private int id;
private String label_text_color;
private int serial_no;
private String status;
private boolean is_liked;
public int getInfo_type() {
return info_type;
}
public void setInfo_type(int info_type) {
this.info_type = info_type;
}
public boolean isCan_view() {
return can_view;
}
public void setCan_view(boolean can_view) {
this.can_view = can_view;
}
public int getUpdated_count() {
return updated_count;
}
public void setUpdated_count(int updated_count) {
this.updated_count = updated_count;
}
public String getLabel_color() {
return label_color;
}
public void setLabel_color(String label_color) {
this.label_color = label_color;
}
public String getCover_image_url() {
return cover_image_url;
}
public void setCover_image_url(String cover_image_url) {
this.cover_image_url = cover_image_url;
}
public int getStoryboard_cnt() {
return storyboard_cnt;
}
public void setStoryboard_cnt(int storyboard_cnt) {
this.storyboard_cnt = storyboard_cnt;
}
public int getCreated_at() {
return created_at;
}
public void setCreated_at(int created_at) {
this.created_at = created_at;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getLikes_count() {
return likes_count;
}
public void setLikes_count(int likes_count) {
this.likes_count = likes_count;
}
public int getUpdated_at() {
return updated_at;
}
public void setUpdated_at(int updated_at) {
this.updated_at = updated_at;
}
public int getSelling_kk_currency() {
return selling_kk_currency;
}
public void setSelling_kk_currency(int selling_kk_currency) {
this.selling_kk_currency = selling_kk_currency;
}
public int getComments_count() {
return comments_count;
}
public void setComments_count(int comments_count) {
this.comments_count = comments_count;
}
public String getLabel_text() {
return label_text;
}
public void setLabel_text(String label_text) {
this.label_text = label_text;
}
public int getZoomable() {
return zoomable;
}
public void setZoomable(int zoomable) {
this.zoomable = zoomable;
}
public boolean isIs_free() {
return is_free;
}
public void setIs_free(boolean is_free) {
this.is_free = is_free;
}
public int getPush_flag() {
return push_flag;
}
public void setPush_flag(int push_flag) {
this.push_flag = push_flag;
}
public TopicBean getTopic() {
return topic;
}
public void setTopic(TopicBean topic) {
this.topic = topic;
}
public int getShared_count() {
return shared_count;
}
public void setShared_count(int shared_count) {
this.shared_count = shared_count;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLabel_text_color() {
return label_text_color;
}
public void setLabel_text_color(String label_text_color) {
this.label_text_color = label_text_color;
}
public int getSerial_no() {
return serial_no;
}
public void setSerial_no(int serial_no) {
this.serial_no = serial_no;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public boolean isIs_liked() {
return is_liked;
}
public void setIs_liked(boolean is_liked) {
this.is_liked = is_liked;
}
public static class TopicBean {
private String discover_image_url;
private String vertical_image_url;
private int updated_at;
private String cover_image_url;
private String description;
private int created_at;
private int id;
private String title;
private UserBean user;
private int label_id;
private int order;
private int comics_count;
public String getDiscover_image_url() {
return discover_image_url;
}
public void setDiscover_image_url(String discover_image_url) {
this.discover_image_url = discover_image_url;
}
public String getVertical_image_url() {
return vertical_image_url;
}
public void setVertical_image_url(String vertical_image_url) {
this.vertical_image_url = vertical_image_url;
}
public int getUpdated_at() {
return updated_at;
}
public void setUpdated_at(int updated_at) {
this.updated_at = updated_at;
}
public String getCover_image_url() {
return cover_image_url;
}
public void setCover_image_url(String cover_image_url) {
this.cover_image_url = cover_image_url;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getCreated_at() {
return created_at;
}
public void setCreated_at(int created_at) {
this.created_at = created_at;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
public int getLabel_id() {
return label_id;
}
public void setLabel_id(int label_id) {
this.label_id = label_id;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public int getComics_count() {
return comics_count;
}
public void setComics_count(int comics_count) {
this.comics_count = comics_count;
}
public static class UserBean {
private int pub_feed;
private String avatar_url;
private int grade;
private String nickname;
private String reg_type;
private int id;
public int getPub_feed() {
return pub_feed;
}
public void setPub_feed(int pub_feed) {
this.pub_feed = pub_feed;
}
public String getAvatar_url() {
return avatar_url;
}
public void setAvatar_url(String avatar_url) {
this.avatar_url = avatar_url;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getReg_type() {
return reg_type;
}
public void setReg_type(String reg_type) {
this.reg_type = reg_type;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
}
}
}
}
布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.yangxuexue201707241505d.MainActivity">
<android.support.design.widget.TabLayout
app:tabMode="scrollable"
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
布局myfragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<me.maxwin.view.XListView
android:id="@+id/xlistview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
布局listv.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:text="标题"/>
<ImageView
android:id="@+id/imageviews"
android:layout_width="match_parent"
android:layout_height="120dp"
/>
</LinearLayout>
这里的代码不建议粘贴,只建议参考viewpager,fragment连用的地方