Hi,
I've been trying to code a GridView to show all the image thumbnails that are found on a particular table on an SQLite DB.
I know the DB is being read, and the issue seems to be binding the images to the GridView object. Here's the code i'm using;
And this is the Layout:
I've been trying to code a GridView to show all the image thumbnails that are found on a particular table on an SQLite DB.
I know the DB is being read, and the issue seems to be binding the images to the GridView object. Here's the code i'm using;
Code:
public class InputItemDataActivity extends AppCompatActivity {
static final int CAM_REQUEST = 1;
String baseFolderName = "MyApp";
String itemId = "";
String imageFileName = "";
String[] mThumbIds;
ArrayList<String> allImages = new ArrayList<String>();
[USER=1021285]@override[/USER]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_item_data);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Intent intent = getIntent();
itemId = intent.getStringExtra(AddItemActivity.EXTRA_MESSAGE);
TextView textView = (TextView) findViewById(R.id.itemId);
textView.setText(itemId);
LoadImages(itemId);
}
public class ImageAdapter extends BaseAdapter{
private Context mContext;
public ImageAdapter(Context c){
mContext = c;
}
public int getCount(){
//return mThumbIds.length;
return allImages.size();
}
public Object getItem(int position){
return null;
}
public long getItemId(int position){
return 0;
}
public View getView(int position, View convertView, ViewGroup parent){
ImageView imageView;
if (convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8,8,8,8);
}else {
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(Drawable.createFromPath(allImages.get(position)));
return imageView;
}
}
public void cancelAction(View view){
Intent intent = new Intent(this, AddItemActivity.class);
startActivity(intent);
}
public void captureImage(View view){
Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = getFile();
camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(camera_intent, CAM_REQUEST);
}
private File getFile(){
File folder = new File("sdcard/" + baseFolderName);
if(!folder.exists()){
folder.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
imageFileName = itemId + "_" + timeStamp + ".jpg";
File image_file = new File(folder, imageFileName);
return image_file;
}
private void InsertImageIntoDB(String itemId, String imageFilename){
SQLiteDatabase myDB = null;
String ItemTableName = "Image";
String erro = "";
String Data="";
try {
// Declara a DB a usar
myDB = this.openOrCreateDatabase("myDB", MODE_PRIVATE, null);
myDB.execSQL("INSERT INTO " + ItemTableName + " (QRCodeId, Image) VALUES ('" + itemId + "', '" + imageFilename + "');");
} catch(Exception e) {
Log.e("Error", "Error", e);
erro = e.getMessage();
TextView errorPanel = (TextView) findViewById(R.id.errorPanel);
errorPanel.setText("Insert Image Error: " + erro);
errorPanel.setVisibility(View.VISIBLE);
} finally {
if (myDB != null) {
myDB.close();
}
}
}
[USER=1021285]@override[/USER]
protected void onActivityResult(int requestCode, int resultCode, Intent data){
String path="sdcard/" + baseFolderName + "/" + imageFileName;
// Add photo to DB
InsertImageIntoDB(itemId, imageFileName);
LoadImages(itemId);
}
private void LoadImages(String itemId){
SQLiteDatabase myDB= null;
String erro = "";
String allItems = "";
try {
myDB = this.openOrCreateDatabase("myDB", MODE_PRIVATE, null);
Cursor c = myDB.rawQuery("SELECT Image.ItemId, Image.QRCodeId, Image.Image FROM Image;" , null);
int itemIdInt = c.getColumnIndex("ItemId");
int QRCodeIdInt = c.getColumnIndex("QRCodeId");
int imageInt = c.getColumnIndex("Image");
// Check if our result was valid.
c.moveToFirst();
if (c != null) {
// Loop through all Results
do {
int currentItemId = c.getInt(itemIdInt);
String currentQRCodeId = c.getString(QRCodeIdInt);
String currentImageFile = c.getString(imageInt);
String path="sdcard/" + baseFolderName + "/" + currentImageFile;
allImages.add(path);
}while(c.moveToNext());
}else{
erro = "No items were found on the DB";
}
} catch(Exception e) {
Log.e("Error", "Error", e);
erro = e.getMessage();
} finally {
if (myDB != null) {
myDB.close();
}
}
if(erro != "") {
TextView errorPanel = (TextView) findViewById(R.id.errorPanel);
errorPanel.setText("Read Error: " + erro);
errorPanel.setVisibility(View.VISIBLE);
}else{
GridView gridView = (GridView) findViewById(R.id.ImageGrid);
gridView.setAdapter(new ImageAdapter(this));
}
}
}
And this is the Layout:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_input_item_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="[USER=696546]@String[/USER]/appbar_scrolling_view_behavior"
tools:context="en.company.myapp.InputItemDataActivity"
tools:showIn="@layout/activity_input_item_data">
<TextView android:id="@+id/errorPanel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"/>
<TextView
android:text="Título"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="50dp"
android:layout_marginLeft="18dp"
android:layout_marginStart="18dp"
android:id="@+id/title" />
<TextView
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/itemIdLabel"
android:layout_toRightOf="@+id/itemIdLabel"
android:layout_toEndOf="@+id/itemIdLabel"
android:layout_marginLeft="28dp"
android:layout_marginStart="28dp"
android:id="@+id/itemId" />
<TextView
android:text="[USER=696546]@String[/USER]/itemIdLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="34dp"
android:id="@+id/itemIdLabel"
android:layout_below="@+id/title"
android:layout_alignLeft="@+id/title"
android:layout_alignStart="@+id/title" />
<TextView
android:text="[USER=696546]@String[/USER]/commentLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/itemIdLabel"
android:layout_alignLeft="@+id/itemIdLabel"
android:layout_alignStart="@+id/itemIdLabel"
android:layout_marginTop="20dp"
android:id="@+id/comment" />
<EditText
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:ems="10"
android:layout_below="@+id/comment"
android:layout_alignLeft="@+id/comment"
android:layout_alignStart="@+id/comment"
android:layout_marginTop="17dp"
android:id="@+id/editText"
android:layout_width="wrap_content" />
<Button
android:text="[USER=696546]@String[/USER]/btnCancelText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button4"
android:eek:nClick="cancelAction"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:text="[USER=696546]@String[/USER]/btnCaptureImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:eek:nClick="captureImage"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<Button
android:text="[USER=696546]@String[/USER]/btnSaveToDB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<GridView
android:layout_width="match_parent"
android:layout_below="@+id/editText"
android:layout_marginTop="23dp"
android:layout_height="220dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/ImageGrid"/>
</RelativeLayout>
Last edited by a moderator: