/***************************************************************/App
package com.example.yuekao; import android.app.Application; import org.xutils.x; /** * Created by dell on 2017/8/22. */ public class App extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); } }
/****************************************************************************/Dao
package com.example.yuekao; /** * Created by dell on 2017/8/22. */ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import java.util.ArrayList; import java.util.List; public class Dao { private SQLiteDatabase db; public Dao(Context context) { MyOpenHelper helper = new MyOpenHelper(context); db = helper.getWritableDatabase(); } public boolean add(String description, String image) { // sqLiteDatabase.execSQL("create table shuju(description varchar(1000) // ,image varchar(1000))"); ContentValues values = new ContentValues(); values.put("description", description); values.put("image", image); long i = db.insert("shuju", null, values); if (i != -1) { return true; } return false; } public ArrayList<Data> findData() { Cursor cursor = db.query(false, "shuju", null, null, null, null, null, null, null); ArrayList<Data> datas = new ArrayList<>(); while (cursor.moveToNext()) { String description = cursor.getString(cursor.getColumnIndex("description")); String image = cursor.getString(cursor.getColumnIndex("image")); Data data = new Data(); data.setDescription(description); data.setImage(image); datas.add(data); } return datas; } }
/*****************************************************/Data
package com.example.yuekao; /** * Created by dell on 2017/8/22. */ public class Data { // sqLiteDatabase.execSQL("create table shuju(description varchar(1000), // image varchar(1000))"); private String description; private String image; public Data(String description, String image) { this.description = description; this.image = image; } public Data() { } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } @Override public String toString() { return "Data{" + "description='" + description + '\'' + ", image='" + image + '\'' + '}'; } }
/****************************************************************/MainActivity
package com.example.yuekao; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private TabLayout tablayout; private ViewPager viewpager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tablayout = (TabLayout) findViewById(R.id.tablayout); viewpager = (ViewPager) findViewById(R.id.viewpager); viewpager.setAdapter(new MyAdapter1(getSupportFragmentManager())); tablayout.setupWithViewPager(viewpager); } }/**********************************************************************/MenuInfo
package com.example.yuekao; import java.util.List; /** * Created by dell on 2017/8/22. */ public class MenuInfo { /** * code : 200 * data : {"topics":[{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170707/6r2pzk9pu.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170707/slcyrhmrg.webp-w640","description":"超级怕鬼却要当阎王是什么悲伤的感受?使徒子老师超火爆力作第二季正式回归,胆小的阎王丫头不光变帅了,打怪姿势还更加酷炫了~东西方神魔齐上阵,给你超搞逗的欢乐体验!每周五晚八点第一时间独家更新,周六热推一整天!可爱阎王和你不见不散~【独家/每周五晚8点更新 责编:大树】\r\n","created_at":1465703869,"is_favourite":false,"title":"阎王不高兴","likes_count":24882691,"updated_at":1465703869,"special_offer":{},"user_id":6,"comments_count":657802,"is_free":true,"id":848,"user":{"pub_feed":1,"avatar_url":"http://f2.kkmh.com/image/150421/i26y7dz2t.jpg-w180","grade":1,"nickname":"使徒子","reg_type":"weibo","id":6},"label_id":5,"order":400,"comics_count":55,"status":"published"},{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170622/sa725m1y4.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170622/866bjp30v.webp-w640","description":"上帝跑路了?世界混乱了?米迦勒跑来人间找老相好,顺便一起拯救格世界,但转世后的路西法却不记得他了\u2026\u2026而原因却是自己封印了他的记忆和力量!现在还要让他觉醒\u2026\u2026只能#%¥#\u2026\u2026算了,自己挖的坑,哭着跪着也要埋完!【独家/每周六更新 责编:M】","created_at":1498104597,"is_favourite":false,"title":"天神没节操","likes_count":1466575,"updated_at":1498104597,"special_offer":{},"user_id":81896370,"comments_count":30948,"is_free":true,"id":1157,"user":{"pub_feed":0,"avatar_url":"http://f2.kkmh.com/image/170624/2i6pm2ylo.webp-w180","grade":1,"nickname":"菲斯娜feisna+南梵(野生组)","reg_type":"author","id":81896370},"label_id":25,"order":0,"comics_count":9,"status":"published"},{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170704/4qbllqtdv.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170703/3c0w96gm4.webp-w640","description":"这是一个贩卖回忆的旧物杂货店,每一个物品都有其主人的独家记忆。圆滑大叔带领纯洁少女,给你讲述那些被人遗忘的回忆。【独家/每周五更新 责编:听雨】","created_at":1496642287,"is_favourite":false,"title":"肆拾杂货店","likes_count":1160024,"updated_at":1496642287,"special_offer":{},"user_id":82248124,"comments_count":27778,"is_free":true,"id":1121,"user":{"pub_feed":0,"avatar_url":"http://f2.kkmh.com/default_avatar_image.jpg-w180","grade":1,"nickname":"所长别开枪是我+wuli爸爸爸爸","reg_type":"author","id":82248124},"label_id":23,"order":0,"comics_count":12,"status":"published"}],"surface_image":"http://f2.kkmh.com/"} * message : ok */ 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 { /** * topics : [{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170707/6r2pzk9pu.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170707/slcyrhmrg.webp-w640","description":"超级怕鬼却要当阎王是什么悲伤的感受?使徒子老师超火爆力作第二季正式回归,胆小的阎王丫头不光变帅了,打怪姿势还更加酷炫了~东西方神魔齐上阵,给你超搞逗的欢乐体验!每周五晚八点第一时间独家更新,周六热推一整天!可爱阎王和你不见不散~【独家/每周五晚8点更新 责编:大树】\r\n","created_at":1465703869,"is_favourite":false,"title":"阎王不高兴","likes_count":24882691,"updated_at":1465703869,"special_offer":{},"user_id":6,"comments_count":657802,"is_free":true,"id":848,"user":{"pub_feed":1,"avatar_url":"http://f2.kkmh.com/image/150421/i26y7dz2t.jpg-w180","grade":1,"nickname":"使徒子","reg_type":"weibo","id":6},"label_id":5,"order":400,"comics_count":55,"status":"published"},{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170622/sa725m1y4.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170622/866bjp30v.webp-w640","description":"上帝跑路了?世界混乱了?米迦勒跑来人间找老相好,顺便一起拯救格世界,但转世后的路西法却不记得他了\u2026\u2026而原因却是自己封印了他的记忆和力量!现在还要让他觉醒\u2026\u2026只能#%¥#\u2026\u2026算了,自己挖的坑,哭着跪着也要埋完!【独家/每周六更新 责编:M】","created_at":1498104597,"is_favourite":false,"title":"天神没节操","likes_count":1466575,"updated_at":1498104597,"special_offer":{},"user_id":81896370,"comments_count":30948,"is_free":true,"id":1157,"user":{"pub_feed":0,"avatar_url":"http://f2.kkmh.com/image/170624/2i6pm2ylo.webp-w180","grade":1,"nickname":"菲斯娜feisna+南梵(野生组)","reg_type":"author","id":81896370},"label_id":25,"order":0,"comics_count":9,"status":"published"},{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/170704/4qbllqtdv.webp-w320","cover_image_url":"http://f2.kkmh.com/image/170703/3c0w96gm4.webp-w640","description":"这是一个贩卖回忆的旧物杂货店,每一个物品都有其主人的独家记忆。圆滑大叔带领纯洁少女,给你讲述那些被人遗忘的回忆。【独家/每周五更新 责编:听雨】","created_at":1496642287,"is_favourite":false,"title":"肆拾杂货店","likes_count":1160024,"updated_at":1496642287,"special_offer":{},"user_id":82248124,"comments_count":27778,"is_free":true,"id":1121,"user":{"pub_feed":0,"avatar_url":"http://f2.kkmh.com/default_avatar_image.jpg-w180","grade":1,"nickname":"所长别开枪是我+wuli爸爸爸爸","reg_type":"author","id":82248124},"label_id":23,"order":0,"comics_count":12,"status":"published"}] * surface_image : http://f2.kkmh.com/ */ private String surface_image; private List<TopicsBean> topics; public String getSurface_image() { return surface_image; } public void setSurface_image(String surface_image) { this.surface_image = surface_image; } public List<TopicsBean> getTopics() { return topics; } public void setTopics(List<TopicsBean> topics) { this.topics = topics; } public static class TopicsBean { /** * discover_image_url : * vertical_image_url : http://f2.kkmh.com/image/170707/6r2pzk9pu.webp-w320 * cover_image_url : http://f2.kkmh.com/image/170707/slcyrhmrg.webp-w640 * description : 超级怕鬼却要当阎王是什么悲伤的感受?使徒子老师超火爆力作第二季正式回归,胆小的阎王丫头不光变帅了,打怪姿势还更加酷炫了~东西方神魔齐上阵,给你超搞逗的欢乐体验!每周五晚八点第一时间独家更新,周六热推一整天!可爱阎王和你不见不散~【独家/每周五晚8点更新 责编:大树】 * <p> * created_at : 1465703869 * is_favourite : false * title : 阎王不高兴 * likes_count : 24882691 * updated_at : 1465703869 * special_offer : {} * user_id : 6 * comments_count : 657802 * is_free : true * id : 848 * user : {"pub_feed":1,"avatar_url":"http://f2.kkmh.com/image/150421/i26y7dz2t.jpg-w180","grade":1,"nickname":"使徒子","reg_type":"weibo","id":6} * label_id : 5 * order : 400 * comics_count : 55 * status : published */ private String discover_image_url; private String vertical_image_url; private String cover_image_url; private String description; private int created_at; private boolean is_favourite; private String title; private int likes_count; private int updated_at; private SpecialOfferBean special_offer; private int user_id; private int comments_count; private boolean is_free; private int id; private UserBean user; private int label_id; private int order; private int comics_count; private String status; 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 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 boolean isIs_favourite() { return is_favourite; } public void setIs_favourite(boolean is_favourite) { this.is_favourite = is_favourite; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } 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 SpecialOfferBean getSpecial_offer() { return special_offer; } public void setSpecial_offer(SpecialOfferBean special_offer) { this.special_offer = special_offer; } public int getUser_id() { return user_id; } public void setUser_id(int user_id) { this.user_id = user_id; } public int getComments_count() { return comments_count; } public void setComments_count(int comments_count) { this.comments_count = comments_count; } public boolean isIs_free() { return is_free; } public void setIs_free(boolean is_free) { this.is_free = is_free; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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 String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public static class SpecialOfferBean { } public static class UserBean { /** * pub_feed : 1 * avatar_url : http://f2.kkmh.com/image/150421/i26y7dz2t.jpg-w180 * grade : 1 * nickname : 使徒子 * reg_type : weibo * id : 6 */ 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; } } } } }
/***********************************************************************/MyAdapter1
package com.example.yuekao; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import java.util.ArrayList; /** * Created by dell on 2017/8/22. */ public class MyAdapter1 extends FragmentStatePagerAdapter { private String[] titles = {"周一", "周二", "周三", "周四", "周五", "周六", "周日"}; private ArrayList<Fragment> mFragment = new ArrayList<Fragment>(); private FragmentManager mFragmentManage; public MyAdapter1(FragmentManager fm) { super(fm); mFragmentManage = fm; } public MyAdapter1(FragmentManager fm, ArrayList<Fragment> mFragment) { super(fm); mFragmentManage = fm; } @Override public Fragment getItem(int position) { MyFragment myFragment = new MyFragment(); return myFragment; } @Override public int getCount() { return titles.length; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } }
/********************************************************************/MyFragment
package com.example.yuekao; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.google.gson.Gson; import com.limxing.xlistview.view.XListView; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import static com.example.yuekao.R.attr.title; /** * Created by dell on 2017/8/22. */ public class MyFragment extends Fragment implements XListView.IXListViewListener { private View view; private XListView xlistview; private ImageLoader imageLoader; private int offset = 1; private int limit = 4; private boolean flag; private Myadapter myadapter; private List<MenuInfo.DataBean.TopicsBean> topics; private SQLiteDatabase db; private MyOpenHelper dao; private Dao dao1; private ArrayList<Data> data; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.mfragmnet, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); xlistview = view.findViewById(R.id.xlistview); xlistview.setPullLoadEnable(true); xlistview.setXListViewListener(this); // dao = new MyOpenHelper(getActivity()); dao1 = new Dao(getActivity()); if (isConnection(getActivity())) { // 下面这个方法是自定义的网络请求数据方法,就不上传了 getDates("http://api.kkmh.com/v1/topic_new/discovery_module_list/210?&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=2", offset + "", limit + ""); } else { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage("网络链接中断,是否设置链接网络"); builder.setNegativeButton("取消", null); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 两种跳转都可以跳转到到设置网络 Intent intent = new Intent(); // Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); intent.setAction("android.settings.WIRELESS_SETTINGS"); startActivity(intent); } }); builder.create().show(); } data = dao1.findData(); } public boolean isConnection(Context context) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); return (info != null && info.isAvailable()); } public void getDates(String path, String offset, String limit) { new AsyncTask<String, Void, String>() { private List<MenuInfo.DataBean.TopicsBean> topics; @Override protected void onPostExecute(String s) { super.onPostExecute(s); RequestParams requestParams = new RequestParams("http://api.kkmh.com/v1/topic_new/discovery_module_list/210?offset=0&limit=3&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=2"); x.http().get(requestParams, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { // if (s != null) { Gson gson = new Gson(); MenuInfo menuInfo = gson.fromJson(result, MenuInfo.class); // list=topics; topics = menuInfo.getData().getTopics(); if (myadapter == null) { myadapter = new Myadapter(topics); xlistview.setAdapter(myadapter); if (data.size() == 0) { for (Data li : data) { boolean b = dao1.add(li.getDescription(), li.getImage()); if (b) { Toast.makeText(getActivity(), "添加成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), "添加失败", Toast.LENGTH_SHORT).show(); } } } } else { myadapter.LoaMore(topics, flag); myadapter.notifyDataSetChanged(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } @Override protected String doInBackground(String... strings) { try { String path = strings[0]; String offset = strings[1]; String limit = strings[2]; URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(2000); urlConnection.setReadTimeout(2000); int code = urlConnection.getResponseCode(); if (code == 200) { InputStream is = urlConnection.getInputStream(); String json = StreamTook.read(is); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path, offset, limit); } @Override public void onRefresh() { // private int offset=0; // private int limit=3; offset++; getDates("http://api.kkmh.com/v1/topic_new/discovery_module_list/210?&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=2", offset + "", limit + ""); flag = true; xlistview.stopRefresh(true); } @Override public void onLoadMore() { offset++; getDates("http://api.kkmh.com/v1/topic_new/discovery_module_list/210?&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=2", offset + "", limit + ""); flag = false; xlistview.stopLoadMore(); } class Myadapter extends BaseAdapter { List<MenuInfo.DataBean.TopicsBean> topics; private final DisplayImageOptions options; public Myadapter(List<MenuInfo.DataBean.TopicsBean> topics) { this.topics = topics; imageLoader = ImageLoader.getInstance(); File file = new File(Environment.getExternalStorageDirectory(), "/oooBwei"); if (!file.exists()) file.mkdirs(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getActivity()) .diskCache(new UnlimitedDiskCache(file)) .build(); imageLoader.init(configuration); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .cacheOnDisk(true) .build(); } public void LoaMore(List<MenuInfo.DataBean.TopicsBean> topic, boolean flag) { for (MenuInfo.DataBean.TopicsBean bean : topic) { if (flag) { topics.clear(); topics.add(0, bean); onLoadMore(); } else { topics.add(bean); } } } @Override public int getCount() { return topics.size(); } @Override public Object getItem(int position) { return topics.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = convertView.inflate(getActivity(), R.layout.item, null); TextView textitem = (TextView) convertView.findViewById(R.id.textitem); ImageView imageitem = (ImageView) convertView.findViewById(R.id.imageitem); textitem.setText(topics.get(position).getDescription()); getimage(topics.get(position).getCover_image_url(), imageitem); xlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(), SecondActivity.class); intent.putExtra("exters", topics.get(i - 1).getCover_image_url()); startActivity(intent); } }); } return convertView; } } public void getimage(String path, ImageView imageView) { DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .build(); ImageLoader.getInstance().displayImage(path, imageView, options); } }
/*****************************************************************/MyOpenHelper
package com.example.yuekao; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; /** * Created by dell on 2017/8/22. */ public class MyOpenHelper extends SQLiteOpenHelper { public MyOpenHelper(Context context) { super(context, "com.db", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table shuju(description varchar(1000),image varchar(1000))"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
/*************************************************************************/SecondActivity
package com.example.yuekao; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.support.annotation.Nullable; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.github.chrisbanes.photoview.PhotoView; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.File; /** * Created by dell on 2017/8/22. */ public class SecondActivity extends Activity { private TextView tv1; private ImageLoader imageLoader; private DisplayImageOptions options; // private ImageView iv1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secondactivity); tv1=(TextView) findViewById(R.id.tv1); Intent it=getIntent(); String StringE=it.getStringExtra("exters"); tv1.setText(StringE); PhotoView iv1 = (PhotoView) findViewById(R.id.iv1); //compile 'com.github.chrisbanes:PhotoView:2.1.3'在app //在onCreate中 // 大工程里jcenter()下加 maven { url "https://jitpack.io" } imageLoader = ImageLoader.getInstance(); File file = new File(Environment.getExternalStorageDirectory(), "Bwei"); if (!file.exists()) file.mkdirs(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .diskCache(new UnlimitedDiskCache(file)) .build(); imageLoader.init(configuration); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .cacheOnDisk(true) .build(); ImageLoader.getInstance().displayImage(StringE, iv1, options); } }/*********************************************************************/StreamTook
package com.example.yuekao; import java.io.ByteArrayOutputStream; import java.io.InputStream; /** * Created by dell on 2017/8/22. */ public class StreamTook { public static String read(InputStream is) throws Exception { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] bytes = new byte[1024]; int len = 0; while ((len = is.read(bytes)) != -1) { byteArrayOutputStream.write(bytes, 0, len); } byteArrayOutputStream.close(); return byteArrayOutputStream.toString(); } }