Android 安卓如何添加浏览按钮?
我跟着 这有助于我在数据库中插入图像。但这段代码一次又一次地将硬编码的相同图像插入数据库 如何修改此代码以允许我通过单击浏览按钮和我自己选择的文本视图从内存上载我选择的照片Android 安卓如何添加浏览按钮?,android,Android,我跟着 这有助于我在数据库中插入图像。但这段代码一次又一次地将硬编码的相同图像插入数据库 如何修改此代码以允许我通过单击浏览按钮和我自己选择的文本视图从内存上载我选择的照片 import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.graphics.Bitmap;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
public class SQLiteDemoActivity extends Activity {
ArrayList<Contact> imageArry = new ArrayList<Contact>();
ContactImageAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DataBaseHandler db = new DataBaseHandler(this);
//get image from drawable
Bitmap image = BitmapFactory.decodeResource(getResources(),
R.drawable.facebook);
//convert bitmap to byte
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imageInByte[] = stream.toByteArray();
/**
* CRUD Operations
* */
//Inserting Contacts
Log.d("Insert: ", "Inserting ..");
db.addContact(new Contact("FaceBook", imageInByte));
//display main List view bcard and contact name
//Reading all contacts from database
List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
String log = "ID:" + cn.getID() + " Name: " + cn.getName()
+ " ,Image: " + cn.getImage();
//Writing Contacts to log
Log.d("Result: ", log);
//add contacts data in arrayList
imageArry.add(cn);
}
adapter = new ContactImageAdapter(this, R.layout.screen_list,
imageArry);
ListView dataList = (ListView) findViewById(R.id.list);
dataList.setAdapter(adapter);
}
}
public class Contact {
// private variables
int _id;
String _name;
byte[] _image;
// Empty constructor
public Contact() {
}
// constructor
public Contact(int keyId, String name, byte[] image) {
this._id = keyId;
this._name = name;
this._image = image;
}
// constructor
public Contact(String contactID, String name, byte[] image) {
this._name = name;
this._image = image;
}
// constructor
public Contact(String name, byte[] image) {
this._name = name;
this._image = image;
}
// getting ID
public int getID() {
return this._id;
}
// setting id
public void setID(int keyId) {
this._id = keyId;
}
// getting name
public String getName() {
return this._name;
}
// setting name
public void setName(String name) {
this._name = name;
}
// getting phone number
public byte[] getImage() {
return this._image;
}
// setting phone number
public void setImage(byte[] image) {
this._image = image;
}
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ContactImageAdapter extends ArrayAdapter<Contact>{
Context context;
int layoutResourceId;
//BcardImage data[] = null;
ArrayList<Contact> data=new ArrayList<Contact>();
public ContactImageAdapter(Context context, int layoutResourceId,
ArrayList<Contact> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
Contact picture = data.get(position);
holder.txtTitle.setText("facebook");
//convert byte to bitmap take from contact class
byte[] outImage=picture._image;
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
holder.imgIcon.setImageBitmap(theImage);
return row;
}
static class ImageHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ContactImageAdapter extends ArrayAdapter<Contact>{
Context context;
int layoutResourceId;
//BcardImage data[] = null;
ArrayList<Contact> data=new ArrayList<Contact>();
public ContactImageAdapter(Context context, int layoutResourceId,
ArrayList<Contact> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
Contact picture = data.get(position);
holder.txtTitle.setText("facebook");
//convert byte to bitmap take from contact class
byte[] outImage=picture._image;
B yteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
holder.imgIcon.setImageBitmap(theImage);
return row;
}
static class ImageHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
import java.io.ByteArrayOutputStream;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.Activity;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ListView;
公共类SQLiteDemoActivity扩展了活动{
ArrayList imageArry=新的ArrayList();
接触式图像适配器;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DataBaseHandler db=新的DataBaseHandler(此);
//从drawable获取图像
位图图像=BitmapFactory.decodeResource(getResources(),
R.drawable.facebook);
//将位图转换为字节
ByteArrayOutputStream=新建ByteArrayOutputStream();
image.compress(位图.CompressFormat.JPEG,100,流);
字节imageInByte[]=stream.toByteArray();
/**
*积垢作业
* */
//插入联系人
日志d(“插入:”,“插入..”);
db.addContact(新联系人(“FaceBook”,imageInByte));
//显示主列表视图B卡和联系人姓名
//正在从数据库读取所有联系人
List contacts=db.getAllContacts();
用于(联系人cn:联系人){
String log=“ID:”+cn.getID()+“Name:”+cn.getName()
+,图像:“+cn.getImage();
//将联系人写入日志
Log.d(“结果:”,Log);
//在arrayList中添加联系人数据
imageArry.add(中国);
}
适配器=新的ContactImageAdapter(此,R.layout.screen\u列表,
图像传输);
ListView数据列表=(ListView)findViewById(R.id.list);
dataList.setAdapter(适配器);
}
}
公共类联系人{
//私有变量
内部id;
字符串\u名称;
字节[]_图像;
//空构造函数
公众联络(){
}
//建造师
公共联系人(int-keyId,字符串名称,字节[]图像){
这个。_id=keyId;
这个。_name=name;
这个。_image=image;
}
//建造师
公共联系人(字符串contactID、字符串名称、字节[]图像){
这个。_name=name;
这个。_image=image;
}
//建造师
公共联系人(字符串名称,字节[]图像){
这个。_name=name;
这个。_image=image;
}
//获取身份证
公共int getID(){
返回此。\u id;
}
//设置id
公共void setID(int-keyId){
这个。_id=keyId;
}
//得名
公共字符串getName(){
返回此。\u名称;
}
//设置名称
公共void集合名(字符串名){
这个。_name=name;
}
//获取电话号码
公共字节[]getImage(){
返回此。\u图像;
}
//设置电话号码
public void setImage(字节[]图像){
这个。_image=image;
}
导入java.io.ByteArrayInputStream;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类ContactImageAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
//BCardImageData[]=null;
ArrayList数据=新的ArrayList();
public ContactImageAdapter(上下文、int layoutResourceId、,
ArrayList数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ImageHolder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的图像支架();
holder.txtTitle=(TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon=(ImageView)row.findViewById(R.id.imgIcon);
row.setTag(支架);
}
其他的
{
holder=(ImageHolder)行。getTag();
}
联系人图片=数据。获取(位置);
holder.txtTitle.setText(“facebook”);
//从contact类将字节转换为位图
字节[]outImage=图片。\u图像;
ByteArrayInputStream imageStream=新的ByteArrayInputStream(outImage);
位图theImage=BitmapFactory.decodeStream(图像流);
holder.imgIcon.setImageBitmap(图像);
返回行;
}
静态类图像保持器
{
ImageView imgIcon;
TextView-txtTitle;
}
}
导入java.io.ByteArrayInputStream;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类ContactImageAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
//BCardImageData[]=null;
ArrayList数据=新的ArrayList();
public ContactImageAdapter(上下文、int layoutResourceId、,
ArrayList数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ImageHolder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的图像支架();
holder.txtTitle=(TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon=(ImageView)row.findViewById(R.id.imgIcon);
row.setTag(支架);
}
其他的
{
holder=(ImageHolder)行。getTag();
}
续