判斷網路,資料庫,Drawlayout
阿新 • • 發佈:2018-12-17
話不多說,直接看程式碼 首先加許可權
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/draw" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9"></android.support.v4.view.ViewPager> <RadioGroup android:id="@+id/radio" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <RadioButton android:id="@+id/btn01" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:text="關注" android:gravity="center" android:checked="true" android:background="@drawable/select"/> <RadioButton android:id="@+id/btn02" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:text="訊息" android:background="@drawable/select"/> <RadioButton android:id="@+id/btn03" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:text="我的" android:background="@drawable/select"/> </RadioGroup> </LinearLayout> <fragment class="bwie.com.yuekao.fragment.Fragmentce" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" ></fragment> </android.support.v4.widget.DrawerLayout>
之後是MainActvitiy
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.RadioGroup; import bwie.com.yuekao.fragment.Fragement03; import bwie.com.yuekao.fragment.Fragment01; import bwie.com.yuekao.fragment.Fragment02; public class MainActivity extends AppCompatActivity { private ViewPager viewpager; private RadioGroup group; private DrawerLayout draw; private ActionBarDrawerToggle toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); draw = findViewById(R.id.draw); viewpager = findViewById(R.id.pager); group = findViewById(R.id.radio); draw.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED); initad(); FragmentManager man = getSupportFragmentManager(); viewpager.setAdapter(new MyPageAdpter(man)); group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i){ case R.id.btn01: viewpager.setCurrentItem(0); break; case R.id.btn02: viewpager.setCurrentItem(1); break; case R.id.btn03: viewpager.setCurrentItem(2); break; } } }); viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { switch (i){ case 0: group.check(R.id.btn01); break; case 1: group.check(R.id.btn02); break; case 2: group.check(R.id.btn03); break; } } @Override public void onPageScrollStateChanged(int i) { } }); } class MyPageAdpter extends FragmentPagerAdapter { public MyPageAdpter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch (i){ case 0: Fragment01 fr01 = new Fragment01(); return fr01; case 1: Fragment02 fr02 = new Fragment02(); return fr02; case 2: Fragement03 fr03 = new Fragement03(); return fr03; } return null; } @Override public int getCount() { return 3; } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (toggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } private void initad() { ActionBar actionBar = getSupportActionBar(); //設定一個預設的照片 actionBar.setDisplayHomeAsUpEnabled(true); toggle = new ActionBarDrawerToggle(this, draw, R.string.open, R.string.close); toggle.syncState(); draw.addDrawerListener(toggle); } }
之後是工具類
import android.os.AsyncTask; import com.google.common.io.CharStreams; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Httpurl { private HttpListener httpListener; public interface HttpListener { void success(String date); } public void setHttpListener(HttpListener httpListener) { this.httpListener = httpListener; } public Httpurl getHttpurl(String url){ new getRuqest(){ }.execute(url); return this; } class getRuqest extends AsyncTask<String,Void,String>{ private String read=null; @Override protected String doInBackground(String... strings) { try { URL url1 = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url1.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode==200){ InputStream stream = connection.getInputStream(); read = CharStreams.toString(new InputStreamReader(stream)); } return read; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { if (s!=null){ httpListener.success(s); } } } } 另一個網路請求工具類 package bwie.com.yuekao.util; import com.google.common.io.CharStreams; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpUrlConnection { public HttpUrlConnection() { } public String getrequest(String url){ String ss=null; try { URL url1 = new URL(url); HttpURLConnection connection = (HttpURLConnection) url1.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode==200){ InputStream stream = connection.getInputStream(); String s = CharStreams.toString(new InputStreamReader(stream)); ss=s; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ss; } } 緊接著是一個有沒有網路的判斷 package bwie.com.yuekao.util; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class WLoupd { public static boolean isNewWL(Context context){ ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info==null){ return false; }else { return true; } } }
不過配置的類這裡就不說明了, 然後是網路請求和資料庫
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import bwie.com.yuekao.R;
import bwie.com.yuekao.adapter.XAdapter;
import bwie.com.yuekao.bean.Lei;
import bwie.com.yuekao.bean.XinwBean;
import bwie.com.yuekao.sql.Dao;
import bwie.com.yuekao.util.HttpUrlConnection;
import bwie.com.yuekao.util.WLoupd;
import me.maxwin.view.XListView;
/**
* A simple {@link Fragment} subclass.
*/
public class Fragment01 extends Fragment {
private XListView xlist;
private int page=1;
private XAdapter xAdapter;
private final static int ONE=1;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
List<XinwBean.DataBean> list= (List<XinwBean.DataBean>) msg.obj;
if (msg.what==ONE){
xAdapter.setData(list);
}else {
xAdapter.addData(list);
}
load();
}
};
private Dao dao;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment01, container, false);
xlist = view.findViewById(R.id.xlist);
xAdapter = new XAdapter(getLayoutInflater());
dao = new Dao(getContext());
if (WLoupd.isNewWL(getContext())){
Log.e("李sss", "有網路");
initView(view);
}else {
List<XinwBean.DataBean> select = dao.select();
Log.e("李sss", select.size()+"");
xAdapter.setData(select);
xlist.setAdapter(xAdapter);
}
return view;
}
private void initView(View view) { ;
xlist.setPullLoadEnable(true);
xlist.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page++;
initData();
}
@Override
public void onLoadMore() {
page++;
initData();
}
});
xlist.setAdapter(xAdapter);
initData();
}
private String url="http://www.xieast.com/api/news/news.php?page=1http://www.xieast.com/api/news/news.php?page=";
private void initData() {
final String req=url+page;
new Thread(new Runnable() {
private List<XinwBean.DataBean> data;
@Override
public void run() {
String getrequest = new HttpUrlConnection().getrequest(req);
XinwBean xinwBean = new Gson().fromJson(getrequest, XinwBean.class);
List<XinwBean.DataBean> data = xinwBean.getData();
List<XinwBean.DataBean> select = dao.select();
for (int i = 0; i <data.size() ; i++) {
//if (xinwBean.getData().get(i).getAuthor_name().equals(select.get(i).getAuthor_name())){
// break;
// }else {
Lei lei = new Lei();
lei.setAuthor_name(xinwBean.getData().get(i).getAuthor_name());
lei.setTitle(xinwBean.getData().get(i).getTitle());
lei.setThumbnail_pic_s(xinwBean.getData().get(i).getThumbnail_pic_s());
lei.setThumbnail_pic_s02(xinwBean.getData().get(i).getThumbnail_pic_s02());
lei.setThumbnail_pic_s03(xinwBean.getData().get(i).getThumbnail_pic_s03());
dao.insert(lei);
//}
}
if (page==1){
handler.sendMessage(handler.obtainMessage(ONE,xinwBean.getData()));
}else {
handler.sendMessage(handler.obtainMessage(2,xinwBean.getData()));
}
}
}).start();
}
void load(){
page++;
xlist.stopLoadMore();
xlist.stopRefresh();
}
}
後面是資料庫 先建立資料庫
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Mhelper extends SQLiteOpenHelper {
public Mhelper(Context context) {
super(context, "Pin.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table web(t_name text,t_title text,t_image text,t_image1 text,t_image2 text)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
然後是對資料庫的增刪該查
package bwie.com.yuekao.sql;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import bwie.com.yuekao.bean.Lei;
import bwie.com.yuekao.bean.XinwBean;
public class Dao {
SQLiteDatabase re;
public Dao(Context context){
Mhelper mhelper = new Mhelper(context);
re = mhelper.getReadableDatabase();
}
//t_name text,t_title text,t_image text,t_image1 text,t_image2 text
//新增方法
public void insert(Lei data) {
// TODO Auto-generated method stub
re.execSQL("insert into web(t_name,t_title,t_image,t_image1,t_image2) values(?,?,?,?,?)",new Object[]{data.getAuthor_name()
,data.getTitle()
,data.getThumbnail_pic_s()
,data.getThumbnail_pic_s02()
,data.getThumbnail_pic_s03()});
//Log.e("李sss", "進來了嗎");
}
//查詢方法
public List<XinwBean.DataBean> select() {
// TODO Auto-generated method stub
List<XinwBean.DataBean> list=new ArrayList<>();
Cursor cursor = re.rawQuery("select * from web", null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("t_name"));
String title = cursor.getString(cursor.getColumnIndex("t_title"));
String image = cursor.getString(cursor.getColumnIndex("t_image"));
String image1 = cursor.getString(cursor.getColumnIndex("t_image1"));
String image2 = cursor.getString(cursor.getColumnIndex("t_image2"));
XinwBean.DataBean dataBeans = new XinwBean.DataBean(name,title,image,image1,image2);
list.add(dataBeans);
}
return list;
}
//修改方法
/*public void update(String trim, String wzh) {
// TODO Auto-generated method stub
re.execSQL("update web set t_address=? where t_name=?",new Object[]{wzh,trim});
}*/
}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
import bwie.com.yuekao.R;
import bwie.com.yuekao.bean.XinwBean;
import bwie.com.yuekao.imageloader.ImageLoaderconfigs;
public class XAdapter extends BaseAdapter {
private List<XinwBean.DataBean> list;
private LayoutInflater inflater;
public XAdapter(LayoutInflater inflater) {
this.inflater = inflater;
list=new ArrayList<XinwBean.DataBean>();
}
@Override
public int getCount() {
return list.size();
}
@Override
public XinwBean.DataBean getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (getItemViewType(i)==ONE){
ViewHolder vh;
if (view==null){
view=inflater.inflate(R.layout.item,viewGroup,false);
vh=new ViewHolder(view);
}else {
vh= (ViewHolder) view.getTag();
}
vh.bindData(getItem(i));
}else {
ViewHolderImage vh;
if (view==null){
view=inflater.inflate(R.layout.item1,viewGroup,false);
vh=new ViewHolderImage(view);
}else {
vh= (ViewHolderImage) view.getTag();
}
vh.bindData(getItem(i));
}
return view;
}
private final static int ONE=1;
private final static int ZERO=0;
@Override
public int getItemViewType(int position) {
XinwBean.DataBean item = getItem(position);
if (item.getThumbnail_pic_s02()==null){
return ONE;
}else {
return ZERO;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
public void addData(List<XinwBean.DataBean> resultBeans) {
if (resultBeans!=null){
list.addAll(resultBeans);
}
notifyDataSetChanged();
}
public void setData(List<XinwBean.DataBean> resultBeans) {
list.clear();
if (resultBeans!=null){
list.addAll(resultBeans);
}
notifyDataSetChanged();
}
class ViewHolder{
ImageView image;
TextView name,title;
public ViewHolder(View view) {
image = view.findViewById(R.id.image);
name=view.findViewById(R.id.name);
title=view.findViewById(R.id.title);
view.setTag(this);
}
public void bindData(XinwBean.DataBean syb){
name.setText(syb.getAuthor_name());
title.setText(syb.getTitle());
ImageLoader.getInstance().displayImage(syb.getThumbnail_pic_s(),image,ImageLoaderconfigs.getDisplayImageOptions(image.getContext()));
}
}
class ViewHolderImage{
ImageView image,image1,image2;
TextView name;
public ViewHolderImage(View view) {
image = view.findViewById(R.id.i_image);
image1=view.findViewById(R.id.i_image1);
image2=view.findViewById(R.id.i_image2);
name=view.findViewById(R.id.i_name);
view.setTag(this);
}
public void bindData(XinwBean.DataBean syb){
name.setText(syb.getTitle());
ImageLoader.getInstance().displayImage(syb.getThumbnail_pic_s(),image,ImageLoaderconfigs.getDisplayImageOptions(image.getContext()));
ImageLoader.getInstance().displayImage(syb.getThumbnail_pic_s02(),image1,ImageLoaderconfigs.getDisplayImageOptions(image1.getContext()));
ImageLoader.getInstance().displayImage(syb.getThumbnail_pic_s03(),image2,ImageLoaderconfigs.getDisplayImageOptions(image2.getContext()));
}
}
}
package bwie.com.yuekao.imageloader;
import android.content.Context;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import bwie.com.yuekao.R;
public class ImageLoaderconfigs {
public static ImageLoaderConfiguration getImageLoaderConfiguration(Context context){
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(context)
.memoryCacheSizePercentage(13)
.diskCacheSize(50*1024*1024)
.build();
return build;
}
public static DisplayImageOptions getDisplayImageOptions(Context context){
DisplayImageOptions build = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
return build;
}
}
不過這個資料庫的新增是有點無腦,準確的來說是有一些bug會一直新增下去,在哪裡加一個判斷就行。