作者:kobe24_3803 | 来源:互联网 | 2023-05-28 01:55
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);
}
}