안드로이드 개발 질문/답변
(글 수 45,052)
package com.gon;
import java.util.ArrayList;
import android.app.Activity; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageView; import android.widget.Toast; import android.widget.TabHost;
public class ImageList extends Activity implements OnClickListener{
String arr1[] = {null,};
EditText selectTagEdit;
private Context mContext = null;
EditText carNameEdit;
EditText fileIdEdit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_list);
mContext = this;
selectTagEdit = (EditText) findViewById(R.id.select_id);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(selectTagEdit.getWindowToken(), 0);
((Button) findViewById(R.id.selectone)).setOnClickListener(this);
GridView gv = (GridView)findViewById(R.id.ImgGridView);
final ImageAdapter ia = new ImageAdapter(this);
gv.setAdapter(ia);
gv.setOnItemClickListener(new OnItemClickListener(){ //이미지 누르면 콜
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
ia.callImageViewer(position);
}
});
}
/**==========================================
* Adapter class
* ==========================================*/
public class ImageAdapter extends BaseAdapter {
private String imgData;
private String geoData;
private ArrayList<String> thumbsDateList;
private ArrayList<String> thumbsDataList;
ImageAdapter(Context c){
mContext = c;
thumbsDataList = new ArrayList<String>();
thumbsIDList = new ArrayList<String>();
thumbsDateList = new ArrayList<String>();
getThumbInfo(thumbsIDList, thumbsDataList, thumbsDateList);
}
public final void callImageViewer(int selectedIndex){
Intent i = new Intent(mContext, ImagePopup.class);
String imgPath = getImageInfo(imgData, geoData, thumbsIDList.get(selectedIndex));
i.putExtra("filename", imgPath);
startActivityForResult(i, 1);
}
public boolean deleteSelected(int sIndex){
return true;
}
public int getCount() {
return thumbsIDList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(String u, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(95, 95));
imageView.setAdjustViewBounds(false);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(2, 2, 2, 2);
}else{
imageView = (ImageView) convertView;
}
BitmapFactory.Options bo = new BitmapFactory.Options();
bo.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(u,bo);
Bitmap resized = Bitmap.createScaledBitmap(bmp, 95, 95, true);
imageView.setImageBitmap(resized);
return imageView;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(95, 95));
imageView.setAdjustViewBounds(false);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(2, 2, 2, 2);
}else{
imageView = (ImageView) convertView;
}
BitmapFactory.Options bo = new BitmapFactory.Options();
bo.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(thumbsDataList.get(position), bo);
Bitmap resized = Bitmap.createScaledBitmap(bmp, 95, 95, true);
imageView.setImageBitmap(resized);
return imageView;
}
private void getThumbInfo(ArrayList<String> thumbsIDs, ArrayList<String> thumbsDatas, ArrayList<String> thumbsDates){
String[] proj = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DATE_TAKEN
};
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
if (imageCursor != null && imageCursor.moveToFirst()){
String title;
String thumbsID;
String thumbsImageID;
String thumbsData;
String data;
String imgSize;
String thumbsDate;
int thumbsIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media._ID);
int thumbsDataCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
int thumbsImageIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
int thumbsSizeCol = imageCursor.getColumnIndex(MediaStore.Images.Media.SIZE);
int thumbsDateCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN);
int num = 0;
do {
thumbsID = imageCursor.getString(thumbsIDCol);
thumbsData = imageCursor.getString(thumbsDataCol);
thumbsImageID = imageCursor.getString(thumbsImageIDCol);
imgSize = imageCursor.getString(thumbsSizeCol);
thumbsDate = imageCursor.getString(thumbsDateCol);
num++;
if (thumbsImageID != null){
thumbsIDs.add(thumbsID);
thumbsDatas.add(thumbsData);
thumbsDates.add(thumbsDate);
}
}while (imageCursor.moveToNext());
}
imageCursor.close();
return;
}
private String getImageInfo(String ImageData, String Location, String thumbID){
String imageDataPath = null;
String[] proj = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DATE_TAKEN};
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, "_ID='"+ thumbID +"'", null, null);
if (imageCursor != null && imageCursor.moveToFirst()){
if (imageCursor.getCount() > 0){
int imgData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
imageDataPath = imageCursor.getString(imgData);
}
}
imageCursor.close();
return imageDataPath;
}
}
public void onClick(View v) {
DBHandler dbhandler = DBHandler.open(this);
if (v.getId() == R.id.selectone) { //검색버튼
String selectIdStr = selectTagEdit.getText().toString();
Cursor cursor = dbhandler.select(selectIdStr);
if (cursor.getCount() == 0) {
Toast.makeText(this, "no match file", Toast.LENGTH_LONG).show();
} else {
String name = cursor.getString(cursor.getColumnIndex("file_id"));
ImageAdapter ia = new ImageAdapter(mContext);
View vv=null;
ViewGroup vg = null;
ia.getView(name, vv, vg);
// Toast.makeText(this, "주소:" + name, Toast.LENGTH_LONG).show();
}
cursor.close();}
dbhandler.close();
}
}
내장 메모리 안의 사진을 불러와 그리드뷰로 보여주는 소스인데요.
맨밑에 onclick에서 검색버튼 눌렀을 때 그 경로(name)에 해당하는 사진만 다시 그리드뷰로 뿌려주려고 하는데요. 검색 버튼을 눌러도 아무런 반응이 없어요ㅠㅠ
뭐가 잘못된건가요..?
else {
String name = cursor.getString(cursor.getColumnIndex("file_id"));
ImageAdapter ia = new ImageAdapter(mContext);
View vv=null;
ViewGroup vg = null;
ia.getView(name, vv, vg);



