안드로이드 개발 질문/답변
(글 수 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);