Java 如何在listview附加数据之前设置默认listview?
我目前有一个listview,当数据添加到listview时使用它。但是,我也希望有一个默认列表,通过列表项说明用户应该做什么(即,在一个由默认值填充的字段中输入任务)。我的代码由一个databasehelper类、一个databasemanager和一个实际的活动(todolist)组成。代码贴在下面Java 如何在listview附加数据之前设置默认listview?,java,android,sqlite,listview,default,Java,Android,Sqlite,Listview,Default,我目前有一个listview,当数据添加到listview时使用它。但是,我也希望有一个默认列表,通过列表项说明用户应该做什么(即,在一个由默认值填充的字段中输入任务)。我的代码由一个databasehelper类、一个databasemanager和一个实际的活动(todolist)组成。代码贴在下面 import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.dat
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
// Table Name
public static final String TABLE_NAME = "todolist";
// Table columns
public static final String _ID = "_id";
public static final String task = "task";
// Database Information
static final String DB_NAME = "pset4.s3db";
// database version
static final int DB_VERSION = 1;
// Creating table query
private static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
task + " TEXT)";
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.nfc.Tag;
import android.util.Log;
import java.util.Arrays;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.widget.EditText;
import android.widget.Toast;
public class DBManager {
private DatabaseHelper dbHelper;
private Context context;
private SQLiteDatabase database;
public DBManager(Context c) {
context = c;
}
public DBManager open() throws SQLException {
dbHelper = new DatabaseHelper(context);
database = dbHelper.getWritableDatabase();
return this;
}
public void close() {
dbHelper.close();
}
public void insert(String name) {
ContentValues contentValue = new ContentValues();
contentValue.put(DatabaseHelper.task, name);
database.insert(DatabaseHelper.TABLE_NAME, null, contentValue);
fetch();
}
public Cursor fetch() {
String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.task };
Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
else{
}
return cursor;
}
public int update(long _id, String name) {
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHelper.task, name);
int i = database.update(DatabaseHelper.TABLE_NAME, contentValues, DatabaseHelper._ID + " = " + _id, null);
return i;
}
public void delete(long _id) {
database.delete(DatabaseHelper.TABLE_NAME, DatabaseHelper._ID + "=" + _id, null);
}
}
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInstaller;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.opengl.EGLDisplay;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.github.paolorotolo.expandableheightlistview.ExpandableHeightListView;
import org.w3c.dom.Text;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private DBManager dbManager;
private ListView listView;
private EditText edittext;
TextView emptyText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listview);
// opens databasemanager
dbManager = new DBManager(this);
dbManager.open();
edittext = (EditText) findViewById(R.id.editText);
// asks for data from database
final Cursor cursor = dbManager.fetch();
final TodoCursorAdapter cursorAdapter = new TodoCursorAdapter(this, cursor);
listView.setAdapter(cursorAdapter);
cursorAdapter.notifyDataSetChanged();
listView.setAdapter(cursorAdapter);
listView.setLongClickable(true);
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(getApplicationContext(), "Item deleted : ", Toast.LENGTH_LONG).show();
long id = cursor.getLong(cursor.getColumnIndex(DatabaseHelper._ID));
deletefromwatchlist((int) id);
dbManager.delete(id);
cursorAdapter.notifyDataSetChanged();
recreate();
return true;
}
});
}
public void addtowatchlist(String text){
final String entry = edittext.getText().toString();
dbManager.insert(entry);
recreate();
}
public void deletefromwatchlist(int id) {
dbManager.delete(id);
}
@Override
protected void onDestroy() {
if (dbManager != null)
{
dbManager.close();
}
super.onDestroy();
}
public void click(View view)
{
EditText edittext = (EditText) findViewById(R.id.editText);
String text = edittext.getText().toString();
addtowatchlist(text);
}
}
导入android.content.Context;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;
公共类DatabaseHelper扩展了SQLiteOpenHelper{
//表名
公共静态最终字符串表\u NAME=“todolist”;
//表列
公共静态最终字符串_ID=“_ID”;
公共静态最终字符串task=“task”;
//数据库信息
静态最终字符串DB_NAME=“pset4.s3db”;
//数据库版本
静态最终int DB_版本=1;
//创建表查询
私有静态最终字符串创建_表=
“创建表格”+表格名称+”(“+
_ID+“整数主键自动递增,”+
任务+“文本”;
公共数据库助手(上下文){
super(上下文,数据库名称,空,数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(创建_表);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表名称);
onCreate(db);
}
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.SQLException;
导入android.database.sqlite.SQLiteDatabase;
导入android.nfc.Tag;
导入android.util.Log;
导入java.util.array;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.SQLException;
导入android.database.sqlite.SQLiteDatabase;
导入android.widget.EditText;
导入android.widget.Toast;
公共类数据库管理器{
私有数据库助手dbHelper;
私人语境;
专用数据库;
公共数据库管理器(上下文c){
上下文=c;
}
public DBManager open()引发SQLException{
dbHelper=新数据库助手(上下文);
database=dbHelper.getWritableDatabase();
归还这个;
}
公众假期结束(){
dbHelper.close();
}
公共void插入(字符串名称){
ContentValues contentValue=新ContentValues();
put(DatabaseHelper.task,名称);
insert(DatabaseHelper.TABLE_NAME,null,contentValue);
fetch();
}
公共游标获取(){
字符串[]列=新字符串[]{DatabaseHelper.\u ID,DatabaseHelper.task};
Cursor Cursor=database.query(DatabaseHelper.TABLE_名称、列、null、null、null、null);
如果(光标!=null){
cursor.moveToFirst();
}
否则{
}
返回光标;
}
公共整数更新(长id,字符串名称){
ContentValues ContentValues=新ContentValues();
contentValues.put(DatabaseHelper.task,名称);
int i=database.update(DatabaseHelper.TABLE_名称,contentValues,DatabaseHelper._ID+“=”+_ID,null);
返回i;
}
公共无效删除(长id){
database.delete(DatabaseHelper.TABLE_NAME,DatabaseHelper._ID+“=”+_ID,null);
}
}
导入android.app.Activity;
导入android.content.Context;
导入android.content.SharedReferences;
导入android.content.pm.PackageInstaller;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.opengl.EGLDisplay;
导入android.os.Build;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.CursorAdapter;
导入android.widget.EditText;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.SimpleCursorAdapter;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.github.paolorotolo.expandableheightlistview.expandableheightlistview;
导入org.w3c.dom.Text;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
专用数据库管理器;
私有列表视图列表视图;
私人编辑文本;
文本视图清空文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.listView);
//打开数据库管理器
dbManager=新的dbManager(此);
dbManager.open();
edittext=(edittext)findViewById(R.id.edittext);
//从数据库中请求数据
最终游标=dbManager.fetch();
最终TodoCursorAdapter cursorAdapter=新TodoCursorAdapter(此,光标);
setAdapter(游标适配器);
cursorAdapter.notifyDataSetChanged();
setAdapter(游标适配器);
listView.setLongClickable(真);
setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Toast.makeText(getApplicationContext(),“项已删除:”,Toast.LENGTH_LONG.show();
long id=cursor.getLong(cursor.getColumnIndex(DatabaseHelper.\u id));
deletefromwatchlist((int)id);
dbManager.delete(id);
cursorAdapter.notifyDataSetChanged();
重新创建();
返回true;
}