xml里面的代码在这里插入代码片
main里面的代码
<Button
android:id="@+id/get_Btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取数据" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
适配器中的代码`在这里插入代码片`
<TextView
android:id="@+id/list_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
主页面中的代码
package com.example.demo;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import com.example.adapter.MyAdapter;
import com.example.bean.MyData;
import com.example.dao.MyDao;
import com.example.utils.MyUtils;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button get_Btn;
private ListView listView;
//将网址写入
private String mUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List<MyData.DataBean> lists = new ArrayList<>();
private MyAdapter adapter;
private MyDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao = new MyDao(this);
initView();
adapter = new MyAdapter(this, lists);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("删除");
builder.setMessage("确定删除吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String title = adapter.getDatas().get(position).getNews_title();
int dele = dao.dele(title);
//进行判断删除
if (dele>0){
adapter.setDatas(dao.show());
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
private void initView() {
get_Btn = (Button) findViewById(R.id.get_Btn);
listView = (ListView) findViewById(R.id.listView);
get_Btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.get_Btn:
List<MyData.DataBean> dataBeanList = dao.show();
//进行判断
if (dataBeanList.size() > 0) {
adapter.setDatas(dataBeanList);
} else {
new MyTask().execute(mUrl);
}
break;
}
}
class MyTask extends AsyncTask<String, Void, List<MyData.DataBean>> {
@Override
protected List<MyData.DataBean> doInBackground(String... strings) {
//创建uri
String json = MyUtils.getMyStrig(strings[0]);
Gson gson = new Gson();
MyData myData = gson.fromJson(json, MyData.class);
return myData.getData();
}
@Override
protected void onPostExecute(List<MyData.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
adapter.setDatas(dataBeans);
dao.add(dataBeans);
}
}
}
封装的适配器
package com.example.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.bean.MyData;
import com.example.zhoukaolianxi1.R;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private Context mContext;
private List<MyData.DataBean> datas;
public MyAdapter(Context mContext, List<MyData.DataBean> datas) {
this.mContext = mContext;
this.datas = datas;
}
public void setDatas(List<MyData.DataBean> datas) {
this.datas = datas;
//刷新适配器
notifyDataSetChanged();
}
public List<MyData.DataBean> getDatas() {
return datas;
}
@Override
public int getCount() {
return datas.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//声明一个holder类
ViewHolder holder = null;
//进行判断
if (convertView == null){
holder = new ViewHolder();
convertView = View.inflate(mContext , R.layout.item,null);
holder.tv_list = convertView.findViewById(R.id.list_tv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv_list.setText(datas.get(position).getNews_title());
return convertView;
}
//holder类
class ViewHolder {
TextView tv_list;
}
}
这里是我的bean包
package com.example.bean;
import java.util.List;
public class MyData {
private int status;
private String info;
private List<DataBean> data;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private String news_id;
private String news_title;
private String news_summary;
private String pic_url;
public String getNews_id() {
return news_id;
}
public void setNews_id(String news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public String getNews_summary() {
return news_summary;
}
public void setNews_summary(String news_summary) {
this.news_summary = news_summary;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
}
}
helper类
package com.example.dao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context, "mydb", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table news (title text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
dao层
package com.example.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.bean.MyData;
import java.util.ArrayList;
import java.util.List;
public class MyDao {
private SQLiteDatabase database;
public MyDao(Context mContext) {
MyHelper helper = new MyHelper(mContext);
database = helper.getWritableDatabase();
}
public List<MyData.DataBean> show() {
//创建一个集合
List<MyData.DataBean> datas = new ArrayList<MyData.DataBean>();
Cursor qu = database.query("news", null, null, null, null, null, null,null);
while(qu.moveToNext()){
String title = qu.getString(qu.getColumnIndex("title"));
//创建一个bean包类
MyData.DataBean dataBean = new MyData.DataBean();
dataBean.setNews_title(title);
datas.add(dataBean);
}
return datas;
}
public void add(List<MyData.DataBean>datas){
//循环添加
for (int i = 0; i<datas.size();i++){
ContentValues values = new ContentValues();
values.put("title",datas.get(i).getNews_title());
database.insert("news",null,values);
}
}
public int dele(String title){
int i = database.delete("news", "title = ? ", new String[]{title});
return i;
}
}
我自己将解析数据的方法抽出来单独封装了一个工具类
package com.example.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MyUtils {
public static String getMyStrig(String mUrl) {
try {
URL url = new URL(mUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream stream = connection.getInputStream();
String sb = getStr(stream);
return sb;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String getStr(InputStream stream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer sb = new StringBuffer();
String con = "";
while ((con = reader.readLine()) != null) {
sb.append(con);
}
reader.close();
return sb.toString();
}
}
以上就是我这个的全部代码了.
如果有更简便易懂的 请私信我.因为总觉得我这个还是有点麻烦写起来.