Helper
public class Helper extends SQLiteOpenHelper{
public Helper(Context context) {
super(context, "mydata", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table my(id integer primary key,json text not null,url text not null)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
---------------------------------------------------------------------------------------------------------------------------------------
Dao类
public class dao {
private Helper h;
private Context ct;
public dao( Context ct) {
h=new Helper(ct);
}
public void add(String json,String path){
SQLiteDatabase sql = h.getWritableDatabase();
sql.execSQL("insert into my(json,url)values(?,?)",new Object[]{json,path});
}
public String query(String url){
SQLiteDatabase sql= h.getWritableDatabase();
Cursor cu= sql.rawQuery("select *from my where url=?",new String[]{url});
if(cu.moveToNext()){
String j = cu.getString(1);
return j;
}
return null;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
在获取数据的Activity中调用dao方法
public class Fr2 extends Fragment {
private ILoadingLayout startLabels;
private Myadp adp;
private View view;
private LinearLayout line;
private ViewPager vp;
private int num = 1;
Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
vp.setCurrentItem(vp.getCurrentItem() + 1);
h.sendEmptyMessageDelayed(0, 2000);
}
}
};
private List<ImageView> images;
private Myadp2 adp3;
private PullToRefreshScrollView scro;
private ListView lv;
private List<Bean.ResultsBean> ll;
private dao d;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fr2, container, false);
line = (LinearLayout) view.findViewById(R.id.line);
lv = (ListView) view.findViewById(R.id.xlist2);
scro = (PullToRefreshScrollView) view.findViewById(R.id.scro);
vp = (ViewPager) view.findViewById(vp2);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
d = new dao(getActivity());
String path = "http://gank.io/api/data/Android/10/1";
String s = d.query(path);
if(s!=null){
Gson g = new Gson();
Bean b = g.fromJson(s, Bean.class);
List<Bean.ResultsBean> ll = b.getResults();
lv.setAdapter(new Myadp(ll,getActivity()));
}else{
getdata();
}
scro.setFocusable(false);
ll = new ArrayList<Bean.ResultsBean>();
String path1 = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=5&page=1";
getdata();
//2.设置刷新模式
/*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */
scro.setMode(PullToRefreshBase.Mode.BOTH);
//3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字)
//此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false
startLabels = scro.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉刷新");
startLabels.setRefreshingLabel("正在刷新...");
startLabels.setReleaseLabel("放开刷新");
ILoadingLayout endLabels = scro.getLoadingLayoutProxy(false, true);
endLabels.setPullLabel("上拉刷新");
endLabels.setRefreshingLabel("正在载入...");
endLabels.setReleaseLabel("放开刷新...");
scro.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
getfreshdata();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
getdata();
}
});
Utilgetdata.getdata(path1, getActivity(), new Myinterface() {
@Override
public void inter(String json) {
Gson g = new Gson();
Bean3 b = g.fromJson(json, Bean3.class);
List<Bean3.DataBean> list = b.getData();
vp.setAdapter(new pageadp(list, getActivity(), h));
h.sendEmptyMessageDelayed(0, 2000);
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < images.size(); i++) {
if (i == position % images.size()) {
images.get(i).setImageResource(R.drawable.shape1);
} else {
images.get(i).setImageResource(R.drawable.shape2);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
addpoint(list.size());
}
});
}
private void getfreshdata() {
String path = "http://gank.io/api/data/Android/10/1";
Utilgetdata.getdata(path, getActivity(), new Myinterface() {
@Override
public void inter(String json) {
Gson g = new Gson();
Bean b = g.fromJson(json, Bean.class);
ll.clear();
ll.addAll(0,b.getResults());
setadapter();
scro.onRefreshComplete();
//可以设置刷新的时间....
startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新
}
});
}
private void getdata() {
num++;
final String path = "http://gank.io/api/data/Android/10/"+num;
Utilgetdata.getdata(path, getActivity(), new Myinterface() {
@Override
public void inter(String json) {
d.add(json,path);
Gson g = new Gson();
Bean b = g.fromJson(json, Bean.class);
ll.addAll(b.getResults());
setadapter();
scro.onRefreshComplete();
}
});
}
private void setadapter() {
if (adp == null) {
adp = new Myadp(ll, getActivity());
lv.setAdapter(adp);
} else {
adp.notifyDataSetChanged();
}
}
public void addpoint(int length) {
images = new ArrayList<>();
line.removeAllViews();
for (int i = 0; i < length; i++) {
ImageView image = new ImageView(getActivity());
if (i == 0) {
image.setImageResource(R.drawable.shape1);
} else {
image.setImageResource(R.drawable.shape2);
}
//添加到集合
images.add(image);
//设置原点边距
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(5, 0, 5, 0);
line.addView(image, params);
}
}
}