2014-09-22 4 views
1

Я работаю над gridView с целью получения изображений из определенной папки в SdCard и заполнения их в GridView. Я пишу этот код ниже, но он не доступен для клика, я могу получить изображения и загрузить их в gridview, но когда я нажимаю на изображения, он не работает. Пожалуйста, посмотрите и скажите мне, какую ошибку я здесь делаю.Как сделать gridView clickable

public class MainActivity extends Activity { 

    public class ImageAdapter extends BaseAdapter { 

     private Context mContext; 
     ArrayList <String> itemList = new ArrayList <String>(); 

     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     void add(String path) { 
      itemList.add(path); 
     } 

     @Override 
     public int getCount() { 
      return itemList.size(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView; 
      if (convertView == null) { // if it's not recycled, initialize some attributes 
       imageView = new ImageView(mContext); 
       imageView.setLayoutParams(new GridView.LayoutParams(220, 220)); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       imageView.setPadding(8, 8, 8, 8); 
      } else { 
       imageView = (ImageView)convertView; 
      } 

      Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 220, 220); 

      imageView.setImageBitmap(bm); 
      return imageView; 
     } 

     public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) { 

      Bitmap bm = null; 
      // First decode with inJustDecodeBounds=true to check dimensions 
      final BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inJustDecodeBounds = true; 
      BitmapFactory.decodeFile(path, options); 

      // Calculate inSampleSize 
      options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 

      // Decode bitmap with inSampleSize set 
      options.inJustDecodeBounds = false; 
      bm = BitmapFactory.decodeFile(path, options); 

      return bm; 
     } 

     public int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { 
      // Raw height and width of image 
      final int height = options.outHeight; 
      final int width = options.outWidth; 
      int inSampleSize = 1; 

      if (height > reqHeight || width > reqWidth) { 
       if (width > height) { 
        inSampleSize = Math.round((float)height/(float)reqHeight); 
       } else { 
        inSampleSize = Math.round((float)width/(float)reqWidth); 
       } 
      } 

      return inSampleSize; 
     } 
    } 

    ImageAdapter myImageAdapter; 

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

     GridView gridview = (GridView)findViewById(R.id.gridview); 
     myImageAdapter = new ImageAdapter(this); 
     gridview.setAdapter(myImageAdapter); 

     String ExternalStorageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath(); 

     String targetPath = ExternalStorageDirectoryPath + "/camtest/"; 

     Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show(); 
     File targetDirector = new File(targetPath); 

     File[]files = targetDirector.listFiles(); 
     for (File file : files) { 
      myImageAdapter.add(file.getAbsolutePath()); 
     } 

     OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView <?> parent, View view, int position, 
       long id) { 
       String prompt = (String)parent.getItemAtPosition(position); 
       Toast.makeText(getApplicationContext(), prompt, Toast.LENGTH_LONG).show(); 

      } 
     }; 

    } 
} 
+0

установите myOnItemClickListener на ваш вид сетки gridview.setOnItemClickListener (myOnItemClickListener); –

ответ

0
gridview.setOnItemClickListener(myOnItemClickListener); 

gridView.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
    //try this code 
    } 
}); 
0

изменить этот код, как это.

gridView.setOnItemClickListener(new OnItemClickListener() 
{ 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{ 
    //try this code 
} 
}); 
+0

Thanx Pakash, это была глупая ошибка серьезно. thnx много. Prakash, как я могу сделать эти изображения видимыми .. означает, что я хочу, чтобы изображение было увеличено после клика. может у, пожалуйста, помогите мне в этом ?? – Devraj

+0

увеличить изображение означает? в другой деятельности или в той же деятельности? – prakash

+0

В этом же действии, – Devraj

0

вы создали слушателя myOnItemClickListener, но вы не зарегистрировали его gridview.

это ваш listerner:

OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView <?> parent, View view, int position, 
       long id) { 
       String prompt = (String)parent.getItemAtPosition(position); 
       Toast.makeText(getApplicationContext(), prompt, Toast.LENGTH_LONG).show(); 

      } 
     }; 

установить myOnItemClickListener слушателя gridview.

gridview.setOnItemClickListener(myOnItemClickListener); 
0

Попробуйте ниже код

YOUR_GRID_VIEW.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 

    } 
});