首先是fragment主页面的东西数据库+网络判断
public class F1 extends Fragment {
private PullToRefreshListView listView;
private String str="http://www.xieast.com/api/news/news.php?page=1";
private List<JsonBean.DataBean> data;
private Dao dao;
private ArrayList<JsonBean.DataBean> arrayList;
private boolean b;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(),R.layout.f1,null);
listView = view.findViewById(R.id.pull_to_refresh_listview);
dao = new Dao(getActivity());
if (b){
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
data = bean.getData();
MyAdapter adapter = new MyAdapter(data,getActivity());
listView.setAdapter(adapter);
listView.onRefreshComplete();
if (dao.query("f", null, null, null, null, null, null).moveToFirst()){
}else {
for (int i=0;i<=data.size();i++){
ContentValues values = new ContentValues();
values.put("title",data.get(i).getTitle());
dao.insert("f",null,values);
}
}
}
});
}else {
Toast.makeText(getActivity(), "无网络连接,请检查网络设置", Toast.LENGTH_LONG).show();
Cursor query = dao.query("f", null, null, null, null, null, null);
arrayList = new ArrayList<>();
if (query.moveToFirst()){
while (query.moveToNext()){
String title = query.getString(query.getColumnIndex("title"));
arrayList.add(new JsonBean.DataBean(title));
}
listView.setAdapter(new MyAdapter(arrayList, getActivity()));
listView.onRefreshComplete();
}else {
Toast.makeText(getActivity(),"无数据",Toast.LENGTH_LONG).show();
}
}
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
listView.setMode(PullToRefreshListView.Mode.BOTH);
b = HttpUtils.isNetwork(getActivity());
if (b){
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
data = bean.getData();
MyAdapter adapter = new MyAdapter(data,getActivity());
listView.setAdapter(adapter);
listView.onRefreshComplete();
}
});
}else {
Toast.makeText(getActivity(), "无网络连接,请检查网络设置", Toast.LENGTH_LONG).show();
Cursor query = dao.query("f", null, null, null, null, null, null);
arrayList = new ArrayList<>();
if (query.moveToFirst()){
while (query.moveToNext()){
String title = query.getString(query.getColumnIndex("title"));
arrayList.add(new JsonBean.DataBean(title));
}
listView.setAdapter(new MyAdapter(arrayList, getActivity()));
listView.onRefreshComplete();
}else {
Toast.makeText(getActivity(),"无数据",Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
listView.setMode(PullToRefreshListView.Mode.BOTH);
boolean b = HttpUtils.isNetwork(getActivity());
if (b){
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
data = bean.getData();
MyAdapter adapter = new MyAdapter(data,getActivity());
listView.setAdapter(adapter);
listView.onRefreshComplete();
}
});
}else {
Toast.makeText(getActivity(), "无网络连接,请检查网络设置", Toast.LENGTH_LONG).show();
Cursor query = dao.query("f", null, null, null, null, null, null);
arrayList = new ArrayList<>();
if (query.moveToFirst()){
while (query.moveToNext()){
String title = query.getString(query.getColumnIndex("title"));
arrayList.add(new JsonBean.DataBean(title));
}
listView.setAdapter(new MyAdapter(arrayList, getActivity()));
listView.onRefreshComplete();
}else {
Toast.makeText(getActivity(),"无数据",Toast.LENGTH_LONG).show();
}
}
}
});
return view;
}
}
下面是数据库
接着是DAO层
下面是app的代码不要忘记写权限,导入imageloader依赖
下面是网络请求的代码HTTP
public class HttpUtils {
//异步请求接口
public static void httpAsyncTask(String str, final CallBackString backString){
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... strings) {
return httpget(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
backString.getData(s);
}
}.execute(str);
}
public interface CallBackString{
void getData(String s);
}
//判断有没有网络
public static boolean isNetwork(Context context){
if (context!=null){
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getActiveNetworkInfo();
if (info!=null){
return info.isAvailable();
}
}
return false;
}
public static String httpget(String strUrl){
try {
URL url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder builder = new StringBuilder();
String str="";
while ((str=reader.readLine())!=null){
builder.append(str);
}
connection.disconnect();
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
下面是写TAblayout的代码
下面最主要的QQ页面
下面是xml中QQ页面的代码
还有一个tablayout的代码+viewpager
多条目的时候可以写
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true)//让图片进行sdcard缓存
/.showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误
.showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片
.showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片/
.build();
//参数1:加载的图片地址
//参数2:将图片设置到那个图片控件上面
//参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)