热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据管理ListViewSQLiteDialog

欢迎界面登陆后的主界面,自动查询数据库并加载显示数据到ListView中添加数据长按删除menu按钮排序按ID逆序排列的界面xml布局写的不是很好,若您

欢迎界面



登陆后的主界面,自动查询数据库并加载显示数据到ListView中



添加数据



长按删除



menu按钮排序


按ID逆序排列的界面




xml布局写的不是很好,若您有更好的布局方式,请回复一下,让我也学习学习哈,一同进步。。。。
第一次写这么多的代码,发帖不易,请不要让此贴沉下去哈,回复还有下载豆豆拿。。。

欢迎界面的java代码  StartLuncher.java


[mw_shl_code=java,true]package wj.sqlitedemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class StartLuncher extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.myluncher);
               
                luncherStart();
               
        }
        
        public void luncherStart(){
                new Thread(){
                        public void run(){
                                try{
                                        Thread.sleep(2500);
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
                                }
                                Intent intent =  new Intent();
                                intent.setClass(StartLuncher.this,MainActivity.class);
                                startActivity(intent);
                                finish();
                        }
                }.start();
               
        }
        
}
[/mw_shl_code]


欢迎界面的XML代码 myluncher.xml
[mw_shl_code=xhtml,true]
        android:orientation="vertical"
        android:gravity="center"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/login" >   
[/mw_shl_code]


AndroidManifest.xml
[mw_shl_code=xhtml,true]     package="wj.sqlitedemo"
    android:versionCode="1"
    android:versionName="1.0" >

            android:minSdkVersion="3"
        android:targetSdkVersion="15" />

            android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
                     android:name=".StartLuncher"
            android:label="@string/title_activity_main" >
            
               

               
            

        
        
        
   

[/mw_shl_code]


MainActivity.java     比较长,耐心看完哈,肯定会有收货的,我学的不咋地,但是我写的我能看懂,你也一定能看懂。。。
[mw_shl_code=java,true]package wj.sqlitedemo;

import java.util.Timer;
import java.util.TimerTask;

import android.R.drawable;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint({ "ParserError", "ParserError", "ParserError", "ParserError",
                "ParserError", "ParserError", "ParserError" })
public class MainActivity extends ListActivity {

        // 数据表名称
        private static final String TABLE_NAME = "data";
        // 定义帮助类
        private MyDatabaseHepler dbHelper;
        // 定义数据库类
        private SQLiteDatabase db;

        private static final String NAME = "name";
        private static final String AGE = "age";

        SimpleAdapter adapter;
        Button addButton;
        EditText et_name;
        EditText et_age;
        TextView textView;
        ListView list;
        TextView tv_id;
        TextView tv_age;
        TextView tv_name;
        Button button1;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.layout_main);

                // 实例化帮助类
                dbHelper = new MyDatabaseHepler(getApplicationContext());
                // 创建数据库
                db = dbHelper.getWritableDatabase();

                // 实例化帮助类
                dbHelper = new MyDatabaseHepler(getApplicationContext());
                // 创建数据库
                db = dbHelper.getWritableDatabase();

                // 取出组件
                list = (ListView) findViewById(android.R.id.list);
                // list=getListView(); 调用系统的list,和上边的一样

                // 设置监听
                // list.setOnItemClickListener(new MyOnItemClickListener());

                // 注册ListView上下文菜单
                this.registerForContextMenu(list);
                list.setOnCreateContextMenuListener(this);
                // 初始化,调用填充方法填充ListView
                this.queryData();
                addButton = (Button) findViewById(R.id.plus);

               
               //  add 功能实现
                 
                addButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                LayoutInflater inflater = getLayoutInflater();
                                final View layout = inflater.inflate(R.layout.dialog,
                                                (ViewGroup) findViewById(R.id.dialog));
                                new AlertDialog.Builder(MainActivity.this)
                                                .setTitle("增加信息")
                                                .setView(layout)
                                                .setPositiveButton("OK",
                                          new DialogInterface.OnClickListener() {

                                   @Override
                                    public void onClick(DialogInterface dialog,int which) {
                                        et_name = (EditText) layout .findViewById(R.id.et_name);
                                    et_age = (EditText) layout .findViewById(R.id.et_age);

                                       // 取出值
                                String e_name = et_name.getText().toString();
                                     String e_age = et_age.getText() .toString();

                                        ContentValues cv = new ContentValues();
                                         cv.put(NAME, e_name);
                                         cv.put(AGE, e_age);

                                       db.insert(TABLE_NAME, null, cv);
                                     queryData();
                                  }
                                           })
                 .setNegativeButton("Cancle",new DialogInterface.OnClickListener() {

                                      @Override
                          public void onClick(DialogInterface dialog,  int which) {
                                                   dialog.dismiss();
                                               }
                                          }).show();

                        }
                });

        }

        
      //   查询,填充ListView
         
        public void queryData() {
                // 游标
                Cursor cursor = db
                                .query(TABLE_NAME, null, null, null, null, null, null);
                // 启动管理游标
                this.startManagingCursor(cursor);

                // 游标适配器
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                                MainActivity.this, R.layout.userinfo, cursor, new String[] {
                                                "_id", "name", "age" }, new int[] { R.id.id, R.id.name,
                                                R.id.age });
                System.out.println(adapter.getCount());

                // 设置适配器
                setListAdapter(adapter);
                //下边这句话,我不知道应不应该加,若你知道,麻烦回复一下其功能用法,告知我,好么?
                adapter.notifyDataSetChanged();
        }

        // 排序查询
        // public Cursor query (String table, String[] columns, String selection,
          //String[] selectionArgs, String groupBy, String having, String orderBy)
      
        public void queryOrder() {
                // 游标
                Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null,
                                "_id desc");
                // 启动管理游标
                this.startManagingCursor(cursor);

                // 游标适配器
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                                MainActivity.this, R.layout.userinfo, cursor, new String[] {
                                                "_id", "name", "age" }, new int[] { R.id.id, R.id.name,
                                                R.id.age });
                System.out.println(adapter.getCount());

                // 设置适配器
                setListAdapter(adapter);
        }

// menu按钮   按默认排序
        public void queryByIdAsc() {
                // 游标
                Cursor cursor = db
                                .query(TABLE_NAME, null, null, null, null, null, null);
                // 启动管理游标
                this.startManagingCursor(cursor);

                // 游标适配器
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                                MainActivity.this, R.layout.userinfo, cursor, new String[] {
                                                "_id", "name", "age" }, new int[] { R.id.id, R.id.name,
                                                R.id.age });
                System.out.println(adapter.getCount());

                // 设置适配器
                setListAdapter(adapter);
        }

        //
         // 删除

        public void deleteData(final long id) {

                System.out.println(".........");
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("删除内容").setMessage("确定删除吗?")
                                .setIcon(R.drawable.home_trash)
                                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                                // 删除数据
                                                db.delete(TABLE_NAME, "_id=?",
                                                                new String[] { String.valueOf(id) });
                                                // 显示数据
                                                queryData();
                                        }
                                }).setNegativeButton("取消", null).create();
                builder.show();
        }

        
        //上下文菜单
         
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                        ContextMenuInfo menuInfo) {
                menu.setHeaderTitle("信息操作").setHeaderIcon(R.drawable.ic_launcher);

                menu.add(0, 1, 0, "删除");
                super.onCreateContextMenu(menu, v, menuInfo);
        }

        
          //上下文菜单选择
         
        @Override
        public boolean onContextItemSelected(MenuItem item) {
                // 取得选项信息
                AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item
                                .getMenuInfo();
                // 传递ID
                this.deleteData(menuInfo.id);
                return super.onContextItemSelected(item);
        }

        
         //选项菜单选择
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // getMenuInflater().inflate(R.menu.main, menu);
                menu.add(0, 1, 1, "按ID排序");
                menu.add(0, 2, 2, "按默认排序");

                return super.onCreateOptionsMenu(menu);

        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case 1:
                        // 此处添加按年龄
                        queryOrder();
                        Toast.makeText(this, "id  order", Toast.LENGTH_LONG).show();
                        break;
                case 2:

                        // 此处添加按默认排序
                        queryByIdAsc();
                        Toast.makeText(this, "默认排序", Toast.LENGTH_LONG).show();
                        break;
                }
                return super.onOptionsItemSelected(item);
        }

        // 双击返回键退出程序

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                        exitBy2Click();// 调用双击退出函数
                }
                return false;
        }

        // 准备退出
        private static Boolean isExit = false;
        private void exitBy2Click() {
                Timer tExit = null;
                if (isExit == false) {
                        isExit = true; // 准备退出
                        Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
                        tExit = new Timer();
                        tExit.schedule(new TimerTask() {
                                @Override
                                public void run() {
                                        isExit = false; // 取消退出
                                }
                        }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务

                } else {
                        finish();
                        System.exit(0);
                }
        }

}
[/mw_shl_code]


MyDatabaseHelper.java  数据库类
[mw_shl_code=java,true]package wj.sqlitedemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDatabaseHepler extends SQLiteOpenHelper
{

        // 数据库名称
        private static final String DB_NAME = "notepad.db";
        // 数据表名称
        private static final String TABLE_NAME = "data";
        // 数据库版本
        private static final int DB_VERSION = 1;
        // 创建数据表SQL语句
        private static final String CREATE_TABLE =
                        "CREATE TABLE " + TABLE_NAME
                        + "("
                        + "_id                INTEGER                        PRIMARY KEY ,"
                        + "name         VARCHAR(50)         NOT NULL ,"
                        + "age"
                        + ")";
        // 删除数据表SQL语句
        private static final String DROP_TABLE = "DROP IF TABLE EXISTS "
                        + TABLE_NAME;
        public MyDatabaseHepler(Context context)
        {
                super(context, DB_NAME, null, DB_VERSION);
                System.out.println("--------------------数据库创建成功!!");
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
                // 创建数据表
                db.execSQL(CREATE_TABLE);
                System.out.println("------------------------数据表创建成功!!");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
                db.execSQL(DROP_TABLE);
                System.out.println("-------------------------数据表更新成功!!");
                onCreate(db);
        }

}
[/mw_shl_code]


AddUser.java 添加数据
[mw_shl_code=java,true]package wj.sqlitedemo;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

@SuppressLint("ParserError")
public class AddUser extends Activity {

        // 数据表名称
        private static final String TABLE_NAME = "data";
        // 定义组件
        private EditText et_name;
        private EditText et_age;
        private Button btnSave;

        // 定义数据库对象
        private MyDatabaseHepler dbHelper;
        private SQLiteDatabase db;

        private String e_id;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.dialog);

                // 实例化数据库对象
                dbHelper = new MyDatabaseHepler(getApplicationContext());
                db = dbHelper.getWritableDatabase();

                // 取得组件
                et_name = (EditText) findViewById(R.id.et_name);
                et_age = (EditText) findViewById(R.id.et_age);

                // 获取传递过来的值
                Intent intent = getIntent();
                // 保存值
                e_id = intent.getStringExtra("id");
                String mTitle = intent.getStringExtra("name");
                String mBody = intent.getStringExtra("age");

                // 显示值
                et_name.setText(mTitle);
                et_age.setText(mBody);

                btnSave.setOnClickListener(new MyOnClickListener());
        }

        /**
         * 保存按钮监听方法
         */
        public class MyOnClickListener implements OnClickListener {
                @Override
                public void onClick(View view) {
                        // 取出值
                        String mTitle = et_name.getText().toString();
                        String mBody = et_age.getText().toString();

                        // 定义ContentValues
                        ContentValues cValues = new ContentValues();
                        cValues.put("title", mTitle);
                        cValues.put("body", mBody);

                        // 调用方法
                        savaData(cValues, e_id);
                        // 返回
                        setResult(RESULT_OK);
                        finish();
                }
        }

        /**
         * 保存方法
         */
        public void savaData(ContentValues values, String id) {
                // 如果数据表中的id为空
                if (id == null) {
                        db.insert(TABLE_NAME, null, values);
                        db.close();
                } else {
                        db.update(TABLE_NAME, values, "_id=?",
                                        new String[] { String.valueOf(id) });
                        db.close();
                }
        }

}
[/mw_shl_code]


Layout_Main.xml   主布局,写的有点乱,请谅解哈,假如您有更好的 listView数据列表的布局方式,请麻烦您回复一下,一同进步哈
[mw_shl_code=java,true]     xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linearLayout0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

            android:id="@+id/relativeLayout0"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:background="@drawable/topmenu_bg"
        android:gravity="center"
        android:orientation="horizontal" >

                     android:id="@+id/plus"
            android:layout_width="50dip"
            android:layout_height="30dip"
            android:layout_centerHorizontal="true"
            android:background="@drawable/addxml" />

   
        
            android:layout_height="wrap_content"
        android:stretchColumns="0,1"
        >
        
                             android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/id"
                android:text="@string/id"
                android:textSize="15pt"
                android:textColor="#00BFFF"/>
                             android:layout_width="wrap_content"
                android:layout_gravity="center_vertical"
                android:id="@+id/name"
                android:text="@string/name"
                android:textSize="15pt"
                android:textColor="#00BFFF"/>
                             android:id="@+id/age"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/age"
                android:textColor="#00BFFF"
                android:textSize="15pt" />

        

   

   
            android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:divider="#D4D4D4"
        android:dividerHeight="1dp"
        android:scrollbars="vertical" >
   

[/mw_shl_code]


userinfo.xml LsitView列表元素
[mw_shl_code=java,true]
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
   
            android:gravity="left"
                android:layout_width="100dip"
        android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:paddingLeft="5dip"
                   android:paddingTop="3dip"
                   android:paddingBottom="3dip"
                   android:textSize="10pt"
        />
        />
                    android:layout_width="100dip"
                   android:layout_height="wrap_content"               
                   android:gravity="center_horizontal"
                   android:singleLine="true"
                   android:paddingLeft="5dip"
                   android:paddingTop="3dip"
                   android:paddingBottom="3dip"
                   android:textSize="10pt"
        />
                    android:layout_width="100dip"
                   android:layout_height="wrap_content"               
                   android:gravity="right"
                   android:singleLine="true"
                   android:paddingLeft="5dip"
                   android:paddingTop="3dip"
                   android:paddingBottom="3dip"
                   android:textSize="10pt"
        />
[/mw_shl_code]


dialog.xml   就是添加按钮点击后的弹出输入框  

[mw_shl_code=xhtml,true]
    android:id="@+id/dialog"
    android:layout_width="250dip"
    android:layout_height="200dip"
    android:background="#87CEFA"
    android:gravity="center|center_horizontal"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical" >

            android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >

                     android:id="@+id/tvname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name1" />

                     android:id="@+id/et_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="100dip" />
   


            android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >

                     android:id="@+id/tvage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/age1" />

                     android:id="@+id/et_age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:digits="0123456789"
            android:minWidth="100dip" />
   

[/mw_shl_code]

【转载】http://www.apkbus.com/android-64756-1-1.html

转:https://www.cnblogs.com/jidan/p/3432756.html



推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
author-avatar
打酱油的伦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有