RecycleView加载数据点击条目保存到数据库

目前xUtils主要有四大模块:
DbUtils模块:
android中的orm框架,一行代码就可以进行增删改查;
支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新;
自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
ViewUtils模块:
android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
HttpUtils模块:
支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
BitmapUtils模块:
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;
支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;
可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等…

先初始化xutils 在自定义类里面然后在清单文件使用它 android:name=".MyApplication"

package com.example.administrator.myapplication;

import android.app.Application;

import org.xutils.x;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(true);
        x.Ext.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
    }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HomeworkTwoActivity"
    android:orientation="vertical">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加到recycleView中"
        android:id="@+id/addtorecycle"/>
    <Button
        android:id="@+id/writetodata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="写入数据库"/>
    <Button
        android:id="@+id/readdata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="读取数据库"/>
    <ListView
        android:id="@+id/listviews"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>

java代码

package com.example.administrator.myapplication;

import android.animation.ObjectAnimator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.google.gson.Gson;

import org.xutils.DbManager;
import org.xutils.common.Callback;
import org.xutils.db.table.TableEntity;
import org.xutils.ex.DbException;
import org.xutils.http.RequestParams;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;

import java.util.ArrayList;

@ContentView(R.layout.activity_homework_two)
public class HomeworkTwoActivity extends AppCompatActivity {

    DbManager manager;
    @ViewInject(R.id.readdata)
    private Button readdata;
    @ViewInject(R.id.writetodata)
    private Button writetodata;
    @ViewInject(R.id.addtorecycle)
    private Button addit;
    @ViewInject(R.id.listviews)
    private ListView listView;
    ArrayList<JsonBean.DataBean> list = new ArrayList<>();
    Adapter adapter = new Adapter(list, HomeworkTwoActivity.this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        x.view().inject(this);

        DbManager.DaoConfig daoConfig = new DbManager.DaoConfig();
        daoConfig.setDbName("Mydata");
        daoConfig.setDbVersion(1);
        manager=x.getDb(daoConfig);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                try {
                    JsonBean.DataBean bean = list.get(position);
                    MyTable myTable = new MyTable();
                    myTable.setId(Integer.parseInt(bean.getTheme_id()));
                    myTable.setTitle(bean.getName());

                    manager.save(myTable);
                    Toast.makeText(HomeworkTwoActivity.this, "存入成功", Toast.LENGTH_SHORT).show();
                } catch (DbException e) {
                    e.printStackTrace();
                }
            }
        });
    }


    @Event(value = {R.id.readdata,R.id.writetodata,R.id.addtorecycle,R.id.listviews},type = View.OnClickListener.class)
    private void clickit(View view) throws DbException {
        switch (view.getId()){
            case R.id.addtorecycle:
                wayOne();
                break;
            case R.id.writetodata:

                break;
        }
    }


    private void wayOne() {
        listView.setAdapter(adapter);
        x.http().post(new RequestParams("https://www.apiopen.top/satinApi?type=1&page=2"), new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Gson gson = new Gson();
                JsonBean jsonBean = gson.fromJson(result, JsonBean.class);
                list.addAll(jsonBean.getData());
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }
}

创建表的类

package com.example.administrator.myapplication;

import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;

@Table(name = "Mydata")
public class MyTable {
    @Column(name = "id",isId = true)
    private int id;
    @Column(name = "title")
    private String title;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "MyTable{" +
                "id=" + id +
                ", title='" + title + '\'' +
                '}';
    }
}

最后总结一下:存入数据库的表的数据类型跟要加入的类型一定要一样

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值