lundi 9 février 2015

Receiving a blacked out image in listview using Baseadapter

i did this so far to retreive images from sqlite db. But I am getting a blacked out image i.e. a dark black background in imageview. This is my databasehelper class:



public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME="records.db";
public static final String TABLE_NAME="savedData";
public static final String ID="id";
public static final String NAME="name";
public static final String COMPLNT="complnt";
public static final String IMAGE="image";
public static final String LAT="lat";
public static final String LNG="lng";
public static final String DATETIME="datetime";
public static final String ADDRESS="address";

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

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String createTable="create table"+ TABLE_NAME +"("+ ID+"INTEGER PRIMARY KEY AUTOINCREMENT,"+NAME+ "TEXT,"+COMPLNT+"TEXT,"+IMAGE+"BLOB,"+LAT+"TEXT,"+LNG+"TEXT,"+DATETIME+"TEXT,"+ADDRESS+"TEXT)";
db.execSQL(createTable);
}

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


And this the adapter:



public class Adapter extends BaseAdapter{

private Context mContext;
private ArrayList<String> id;
private ArrayList<String> name;
private ArrayList<String> complnt;
private ArrayList<Bitmap> image;
private ArrayList<String> lat;
private ArrayList<String> lng;
private ArrayList<String> datetime;
private ArrayList<String> address;

Context context;
int layoutResourceId;
ArrayList<Contact> data=new ArrayList<Contact>();

public Adapter(Context c,ArrayList<String> id,ArrayList<String> name,ArrayList<String> complnt,ArrayList<Bitmap> image,ArrayList<String> lat,ArrayList<String> lng,ArrayList<String> datetime,ArrayList<String> address)
{
//super(c,layoutresourceId,data);
this.mContext=c;
/**this.layoutResourceId=layoutresourceId;**/
//this.data=data;
this.id=id;
this.name=name;
this.complnt=complnt;
this.image=image;
this.lat=lat;
this.lng=lng;
this.datetime=datetime;
this.address=address;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row=convertView;
Holder mHolder=null;
LayoutInflater layoutInflater;

if(row==null)
{
//layoutInflater=((Activity)context).getLayoutInflater();
layoutInflater=(LayoutInflater)mContext.getSystemService(context.LAYOUT_INFLATER_SERVICE);
//row=layoutInflater.inflate(layoutResourceId, parent,false);
row=layoutInflater.inflate(R.layout.listcell, null);
mHolder=new Holder();
mHolder.id=(TextView)row.findViewById(R.id.ID);
mHolder.name=(TextView)row.findViewById(R.id.name);
mHolder.complnt=(TextView)row.findViewById(R.id.complnt);
mHolder.image=(ImageView)row.findViewById(R.id.imageView);
mHolder.lat=(TextView)row.findViewById(R.id.lat);
mHolder.lng=(TextView)row.findViewById(R.id.lng);
mHolder.datetime=(TextView)row.findViewById(R.id.datetime);
mHolder.address=(TextView)row.findViewById(R.id.address);

row.setTag(mHolder);
}

else
{
mHolder=(Holder)row.getTag();
}

/**Contact picture=data.get(position);
mHolder.id.setText(picture._id);
mHolder.name.setText(picture._name);
mHolder.complnt.setText(picture._complnt);
byte[] outImage=picture._image;
ByteArrayInputStream imageStream=new ByteArrayInputStream(outImage);
Bitmap theImage=BitmapFactory.decodeStream(imageStream);
mHolder.image.setImageBitmap(theImage);
mHolder.lat.setText(picture._lat);
mHolder.lng.setText(picture._lng);
mHolder.datetime.setText(picture._datetime);
mHolder.address.setText(picture._address);**/

mHolder.id.setText(id.get(position));
mHolder.name.setText(name.get(position));
mHolder.complnt.setText(complnt.get(position));
mHolder.image.setImageBitmap(image.get(position));
mHolder.lat.setText(lat.get(position));
mHolder.lng.setText(lng.get(position));
mHolder.datetime.setText(datetime.get(position));
mHolder.address.setText(address.get(position));

return row;
}

public class Holder
{
TextView id;
TextView name;
TextView complnt;
ImageView image;
TextView lat;
TextView lng;
TextView datetime;
TextView address;
}

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


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


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


And this is my activity class:



public class Viewreport extends Activity {

private DatabaseHelper mHelper;
private SQLiteDatabase database;

//ArrayList<Contact> imageArry=new ArrayList<Contact>();
Adapter adapter;

private ArrayList<String> id=new ArrayList<String>();
private ArrayList<String> name=new ArrayList<String>();
private ArrayList<String> complnt=new ArrayList<String>();
private ArrayList<Bitmap> image=new ArrayList<Bitmap>();
@Override
protected void onResume() {
// TODO Auto-generated method stub
displayData();
super.onResume();
}

private ArrayList<String> lat=new ArrayList<String>();
private ArrayList<String> lng=new ArrayList<String>();
private ArrayList<String> datetime=new ArrayList<String>();
private ArrayList<String> address=new ArrayList<String>();

private ListView list;

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

DatabaseHelper db=new DatabaseHelper(this);

list=(ListView)findViewById(R.id.List);
mHelper=new DatabaseHelper(this);

/**List<Contact> contacts=db.getAllContacts();
for(Contact cn: contacts)
{
String log="ID:"+cn.getID()+" NAME: "+cn.getName()+" COMPLAINT:"+cn.getComplnt()
+" IMAGE: "+cn.getImage()+" LAT: "+cn.getLat()+" LNG: "+cn.getLng()
+" DATETIME: "+cn.getDatetime()+" ADDRESS: "+cn.getAddress();
Log.d("RESULT: ", log);
imageArry.add(cn);
}

adapter=new Adapter(this, R.layout.listcell, imageArry);
ListView dataList=(ListView)findViewById(R.id.List);
dataList.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.viewreport, 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);
}

private void displayData() {
database = mHelper.getWritableDatabase();
Cursor mCursor = database.rawQuery("SELECT * FROM "
+ DatabaseHelper.TABLE_NAME, null);

id.clear();
name.clear();
complnt.clear();
image.clear();
lat.clear();
lng.clear();
datetime.clear();
address.clear();

if (mCursor.moveToFirst()) {
do {
id.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.ID)));
name.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.NAME)));
complnt.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.COMPLNT)));
byte[] image1=(mCursor.getBlob(mCursor.getColumnIndexOrThrow(DatabaseHelper.IMAGE)));
final BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize=8;
options.inPurgeable=true;
Bitmap bmp=BitmapFactory.decodeByteArray(image1, 0, image1.length,options);
Bitmap bmp2=Bitmap.createScaledBitmap(bmp, 90, 90, true);
image.add(bmp2);
lat.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.LAT)));
lng.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.LNG)));
datetime.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.DATETIME)));
address.add(mCursor.getString(mCursor.getColumnIndex(DatabaseHelper.ADDRESS)));

} while (mCursor.moveToNext());
}
Adapter disadpt = new Adapter(Viewreport.this,id, name, complnt,image,lat,lng,datetime,address);
list.setAdapter(disadpt);
mCursor.close();
}
}


Listcell.xml:



<LinearLayout xmlns:android="http://ift.tt/nIICcg"
xmlns:tools="http://ift.tt/LrGmb4"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#F3CAE5"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp" >

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/ID"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/name"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/complnt"
/>

<ImageView
android:id="@+id/imageView"
android:layout_width="56dip"
android:layout_height="56dip"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/lat"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/lng"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/datetime"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="26dip"
android:id="@+id/address"
/>




</LinearLayout>


activity main.xml:



<LinearLayout xmlns:android="http://ift.tt/nIICcg"
xmlns:tools="http://ift.tt/LrGmb4"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="6dip"
android:orientation="horizontal"
tools:context="com.example.camera.Viewreport" >


<ListView
android:id="@+id/List"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#8DB3E1"
android:dividerHeight="2dp" />

</LinearLayout>


I have tried everything but I am still receiving a blacked out image in my imageview.


Aucun commentaire:

Enregistrer un commentaire