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

从sqlite获取数据并在gridview中显示

如何解决《从sqlite获取数据并在gridview中显示》经验,为你挑选了1个好方法。



1> Ashish Tiwar..:

设置适配器GridView就像ListView适配器一样.我想在这里展示一个例子.

这是Gridview(activity_main.xml)的XML布局:









这是项目的另一个布局文件(layout_grid_item.xml) GridView













这是适配器类(MyAdapter.java)

public class MyAdapter extends BaseAdapter {
Context context;
ArrayList empList;
private static LayoutInflater inflater = null;

public MyAdapter(Context context, ArrayList empList) {
    this.cOntext= context;
    this.empList = empList;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return empList.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    if (cOnvertView== null)
        cOnvertView= inflater.inflate(R.layout.layout_grid_item, null);

    TextView codeTextView = (TextView) convertView.findViewById(R.id.tv_emp_id);
    TextView nameTextView = (TextView) convertView.findViewById(R.id.tv_emp_name);
    TextView emailTextView = (TextView) convertView.findViewById(R.id.tv_emp_email);
    TextView addressTextView = (TextView) convertView.findViewById(R.id.tv_emp_address);

    Employee e = new Employee();
    e = empList.get(position);
    codeTextView.setText("Code: " + String.valueOf(e.getCode()));
    nameTextView.setText("Name: " + e.getName());
    emailTextView.setText("Email: " + e.getEmail());
    addressTextView.setText("Address: " + e.getAddress());
    return convertView;
}

}

这是模型类(Employee.java)

package com.example.griddemo;

public class Employee {

int code;
String name, email, address;

/* Setters */ 
public void setCode(int code) {
    this.code = code;
}

public void setName(String name) {
    this.name = name;
}

public void setEmail(String email) {
    this.email = email;
}

public void setAddress(String address) {
    this.address = address;
}

/* Getters */ 
public int getCode() {
    return this.code;
}

public String getName() {
    return this.name;
}

public String getEmail() {
    return this.email;
}

public String getAddress() {
    return this.address;
}
}

这是处理数据库操作的类(DatabaseHelper.java)

public class DatabaseHelper extends SQLiteOpenHelper {

private String TAG = this.getClass().getSimpleName();

private static final String DATABASE_NAME = "emp_db";
private static final int DATABASE_VERSION = 1;

// TABLE NAMES
private static final String TABLE_EMP = "employee";

/* Keys for Table Employee */ 
private static final String KEY_CODE = "code";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL = "email";
private static final String KEY_ADDRESS = "address";

String CREATE_TABLE_CALL = "CREATE TABLE " + TABLE_EMP + "(" + KEY_CODE + " INTEGER," + KEY_NAME + " TEXT," + KEY_EMAIL + " TEXT," + KEY_ADDRESS
        + ")";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    Log.v(TAG, "CREATE TABLE CALL: " + CREATE_TABLE_CALL);
    db.execSQL(CREATE_TABLE_CALL);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_EMP);
    onCreate(db);
}

/* Method to create a Employee */ 
public long createEmployee(Employee emp) {
    long c;

    SQLiteDatabase database = getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_CODE, emp.getCode());
    values.put(KEY_NAME, emp.getName());
    values.put(KEY_EMAIL, emp.getEmail());
    values.put(KEY_ADDRESS, emp.getAddress());

    c = database.insert(TABLE_EMP, null, values);
    database.close();
    return c;

}

/* Method for fetching record from Database */
public ArrayList getAllEmployee() {
    String query = "SELECT * FROM " + TABLE_EMP;
    ArrayList employees = new ArrayList();
    SQLiteDatabase database = getReadableDatabase();
    Cursor c = database.rawQuery(query, null);
    if (c != null) {
        while (c.moveToNext()) {
            int code = c.getInt(c.getColumnIndex(KEY_CODE));
            String name = c.getString(c.getColumnIndex(KEY_NAME));
            String email = c.getString(c.getColumnIndex(KEY_EMAIL));
            String address = c.getString(c.getColumnIndex(KEY_ADDRESS));

            Employee emp = new Employee();
            emp.setCode(code);
            emp.setName(name);
            emp.setEmail(email);
            emp.setAddress(address);

            Log.v("DBHelper: ", "Name: " + name);
            Log.v("DBHelper: ", "Code: " + code);
            Log.v("DBHelper: ", "Email: " + email);
            Log.v("DBHelper: ", "Address: " + address);

            employees.add(emp);
        }
    }

    return employees;

}
/* This method is used to get a single record from Database. 
   I have given an example, you have to do something like this. */

public Employee getEmployeeByCode(int code)
{
    String query = "SELECT * FROM " + TABLE_EMP+ " WHERE "+ KEY_CODE + " = " +code;
    Employee emp = new Employee();
    SQLiteDatabase database = getReadableDatabase();
    Cursor c = database.rawQuery(query, null);  

    if (c.getCount() > 0) {

        c.moveToFirst();
        int code = c.getInt(c.getColumnIndex(KEY_CODE));
        String name = c.getString(c.getColumnIndex(KEY_NAME));
        String email = c.getString(c.getColumnIndex(KEY_EMAIL));
        String address = c.getString(c.getColumnIndex(KEY_ADDRESS));

        emp.setCode(code);
        emp.setName(name);
        emp.setEmail(email);
        emp.setAddress(address);

        Log.v("DBHelper: ", "Name: " + name);
        Log.v("DBHelper: ", "Code: " + code);
        Log.v("DBHelper: ", "Email: " + email);
        Log.v("DBHelper: ", "Address: " + address);


    }
    return emp;
}

这是 MainActivity.java

public class MainActivity extends Activity {

GridView gridView;
ArrayList employeeList;
MyAdapter adapter;

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

    gridView = (GridView) findViewById(R.id.gv_emp);

    DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this);
    employeeList = new ArrayList();

    employeeList = databaseHelper.getAllEmployee();
    adapter = new MyAdapter(MainActivity.this, employeeList);
    gridView.setAdapter(adapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}


推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
kobe24_3803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有