I got source code from internet and i try to
modify it so that, it can retrieve all the icons in one of the folder that stored in sd card
and display it in gridview.
Meanwhile, once the icon being clicked by users it will link to another activity. but i couldn't make it. the codes has shown below.
thanks in advance for those who can help.
DatabaseHandler.java
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "DISPLAYAPPS_MAIN";
// Contacts table name
private static final String TABLE_MAINAPPS = "MAINAPPS";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_IMAGE = "image";
public DataBaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_APPS_TABLE = "CREATE TABLE " + TABLE_MAINAPPS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_IMAGE + " BLOB" + ")";
db.execSQL(CREATE_APPS_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_MAINAPPS);
// Create tables again
onCreate(db);
}
// Adding new apps
public void addApps(APPS apps) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, apps._name); // Apps Name
values.put(KEY_IMAGE, apps._image); // Apps image
// Inserting Row
db.insert(TABLE_MAINAPPS, null, values);
db.close(); // Closing database connection
}
// Getting single contact
APPS getAPPS(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_MAINAPPS, new String[] { KEY_ID,
KEY_NAME, KEY_IMAGE }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
APPS apps = new APPS(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getBlob(1));
// return contact
return apps;
}
// Getting All Contacts
public List<APPS> getAllAPPS() {
List<APPS> appsList = new ArrayList<APPS>();
// Select All Query
String selectQuery = "SELECT * FROM MAINAPPS ORDER BY name";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
APPS apps = new APPS();
apps.setID(Integer.parseInt(cursor.getString(0)));
apps.setName(cursor.getString(1));
apps.setImage(cursor.getBlob(2));
// String name = cursor.getString(1) +"\n"+ cursor.getBlob(2);
// Adding contact to list
appsList.add(apps);
} while (cursor.moveToNext());
}
// close inserting data from database
db.close();
// return contact list
return appsList;
}
// Updating single contact
public int updateAPPS(APPS apps) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, apps.getName());
values.put(KEY_IMAGE, apps.getImage());
// updating row
return db.update(TABLE_MAINAPPS, values, KEY_ID + " = ?",
new String[] { String.valueOf(apps.getID()) });
}
// Deleting single contact
public void deleteContact(APPS contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_MAINAPPS, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
db.close();
}
// Getting contacts Count
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_MAINAPPS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
GridviewAvtivity.java
import com.mkyong.android.adapter.ImageAdapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
public class GridViewActivity extends Activity {
GridView gridView;
static final String[] MOBILE_OS = new String[] { "Android", "Ios",
"Windows", "Blackberry" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String label = ((TextView) arg1.findViewById(R.id.grid_item_label)).getText().toString();
if (label.equals("Android")) {
Intent AndroidActivity = new Intent(GridViewActivity.this,
AndroidActivity.class);
startActivity(AndroidActivity);
} else if (label.equals("Ios")) {
Intent IosActivity = new Intent(GridViewActivity.this,
IosActivity.class);
startActivity(IosActivity);
} else if (label.equals("Windows")) {
Intent WindowsActivity = new Intent(GridViewActivity.this,
WindowsActivity.class);
startActivity(WindowsActivity);
} else if (label.equals("Blackberry")) {
Intent BlackberryActivity = new Intent(GridViewActivity.this,
BlackberryActivity.class);
startActivity(BlackberryActivity);
}
}
});
}
}
ImageAdapter.java
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
public ImageAdapter(Context context, String[] mobileValues) {
this.context = context;
this.mobileValues = mobileValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.mobile, null);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]);
// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);
String mobile = mobileValues[position];
if (mobile.equals("Windows")) {
imageView.setImageResource(R.drawable.windows_logo);
} else if (mobile.equals("iOS")) {
imageView.setImageResource(R.drawable.ios_logo);
} else if (mobile.equals("Blackberry")) {
imageView.setImageResource(R.drawable.blackberry_logo);
} else {
imageView.setImageResource(R.drawable.android_logo);
}
} else {
gridView = (View) convertView;
}
return gridView;
}
@Override
public int getCount() {
return mobileValues.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}