安卓实验安卓SQLite和SQLiteDataBase的应用
1、 先将数据写入两个news对象中,方便一会插入数据库,这里定义了一个SetNews类,里面静态方法是插入两条数据到news对象中并返回插入之后的对象
2、重写SQLiteOpenHelper类,以使第一次加载时能创建数据库及表。这里定义了一个MySQLiteHelper类,通过父类的构造方法创建数据库,版本为1;然后重写onCreate方法创建表。
2、 在ListActivity加载时,向数据库中插入两条数据。
(1)首先定义insert方法,方便以后插入数据。
(2)插入数据
3、 插入数据之后读取数据
(1)首先定义一个读取数据库数据的方法
(2)调用方法
4、 将查询到的数据显示到ListView列表中
(1)首先在实验四基础上定义一个ListView,定义id属性
(2)自定义一个布局文件,用于listView加载布局文件,布局如下图
(3)定义一个Map集合,将查出来的数据依次装进map集合
(4)定义适配器并setAdapter
5、 现在就已经可以显示数据库中查询的数据在列表中了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030192316450.png#pic_cente
6、 设置点击事件,三秒过后颜色变蓝色
(1)获取当前点击列表位置,赋值给num
(2)当返回列表界面的时候,如果时间超过3秒,就将当前列表的位置写进XML文件中,首先定义将num写入文件的方法
(3)定义改变颜色的方法,此时需要将写入文件的num读出来,然后通过ListView中的getChildAt方法获取点击过的列表,然后将列表变色,这里用到处理字符串的一些方法
(4)在返回列表界面的时候会调用onRestart方法
运行截图:
前面的两个带图片的是我之前创建的两个列表,具体的列表实现是下面没有图片的![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030192357559.png#pic_center![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030192405172.png#pic_center![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030192411829.png#pic_center
代码:
ListActivity代码:
package com.example.Work6;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.content.ContentValues;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListActivity extends AppCompatActivity {
//定义初始时间
public static long time1;
//定义结束时间
public static long time2;
//定义标志(flag),用于区分是点击的哪个标题
private String flag;
String num;
TextView text11 = null;
TextView text21 = null;
static String t1;
static String t2;
static String t3;
static String t4;
//用于存储点击过的列表(list)编号
final static List<String> listnum = new ArrayList<String>();
List<Map<String, Object>> listitems = new ArrayList<Map<String, Object>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
setContentView(R.layout.activity_list);
text11 = (TextView) findViewById(R.id.Text1);
TextView text12 = (TextView) findViewById(R.id.TextView2);
TextView text13 = (TextView) findViewById(R.id.TextView3);
text21 = (TextView) findViewById(R.id.TextView21);
TextView text22 = (TextView) findViewById(R.id.TextView22);
TextView text23 = (TextView) findViewById(R.id.TextView23);
//定义一个对象数组,长度为2
final News[] news0 = new News[2];
News[] news = new News[2];
//对象初始化
news0[0] = new News();
//通过SetNews类向news[0]和news[1]赋值
news[0] = SetNews.setNews(news0[0], 0);
news0[1] = new News();
news[1] = SetNews.setNews(news0[1], 1);
//初始化数据库,插入数据
this.insert(news[0].getTitle(), news[0].getSource(), news[0].getTime