Android studio结合数据库简单的进行展示删除

本文介绍了一种在安卓应用中实现数据加载、显示和适配器设计的方法,包括使用AsyncTask异步加载数据、自定义适配器处理ListView数据绑定、以及通过DAO模式进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

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();

    }
}

以上就是我这个的全部代码了.
如果有更简便易懂的 请私信我.因为总觉得我这个还是有点麻烦写起来.

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值