2015-09-28 4 views
-1

Это мой Основная деятельность Класс

Так что я деятельность, выбрать изображение из галереи и показывать в GridView, который может выбранный, как я могу получить мой выбранного изображения и просмотр в новый класс при запуске моего нового намерения с помощью ListView?Как получить выбранный элемент в новый класс с Listview андроида

Так вот мой андроид код:

GridView mGridView; 
ImageButton mIb; 
private String[] arrPath; 
private boolean[] thumbnailselection; 
private int ids[]; 
private int count; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    loadApps(); 
    setContentView(R.layout.activity_main); 

    mGridView = (GridView) findViewById(R.id.grid); 
    mIb = (ImageButton) findViewById(R.id.done); 
    mGridView.setAdapter(new ImageAdapter()); 

    mGridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL); 
    mGridView.setMultiChoiceModeListener(new MultiChoiceModeListener()); 
} 

private void loadApps() { 
    String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID}; 
    String orderBy = MediaStore.Images.Media._ID; 
    Cursor imageCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
    int image_column_index = imageCursor.getColumnIndex(MediaStore.Images.Media._ID); 
    this.count = imageCursor.getCount(); 
    this.arrPath = new String[this.count]; 
    ids = new int[count]; 
    this.thumbnailselection = new boolean[this.count]; 
    for (int i = 0; i < this.count; i++){ 
     imageCursor.moveToPosition(i); 
     ids[i] = imageCursor.getInt(image_column_index); 
     int dataColumnIndex = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA); 
     arrPath[i] = imageCursor.getString(dataColumnIndex); 
    } 
    imageCursor.close(); 
} 

public void onBackPressed(){ 
    finish(); 
    super.onBackPressed(); 
} 

public class ImageAdapter extends BaseAdapter{ 

    CheckableLayout l; 
    ImageView i; 

    @Override 
    public int getCount() { 
     return arrPath.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return arrPath[position]; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null){ 
      i = new ImageView(MainActivity.this); 
      i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
      i.setLayoutParams(new ViewGroup.LayoutParams(50, 50)); 
      l = new CheckableLayout(MainActivity.this); 
      l.setLayoutParams(new GridView.LayoutParams(
        GridView.LayoutParams.WRAP_CONTENT, 
        GridView.LayoutParams.WRAP_CONTENT)); 
      l.addView(i); 
     } else { 
      l = (CheckableLayout) convertView; 
      i = (ImageView) l.getChildAt(0); 
     } 

     try { 
      setBitmap(i, ids[position]); 
     } catch (Throwable e){ 

     } 
     return l; 
    } 
} 

private void setBitmap(final ImageView iv, final int id) { 

    new AsyncTask<Void, Void, Bitmap>() { 
     Bitmap myBitmap; 
     @Override 
     protected Bitmap doInBackground(Void... params) { 
      return MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null); 
     } 

     protected void onPostExecute(Bitmap result){ 
      super.onPostExecute(result); 
      //iv.setImageBitmap(result) 
      setMyBitmap(result); 
     } 
     public void setMyBitmap(Bitmap bitmap) { 
      if (this.myBitmap != null) { 
       this.myBitmap.recycle(); 
      } 
      this.myBitmap = bitmap; 
      iv.getLayoutParams().height = 300; 
      iv.getLayoutParams().width = 300; 
      iv.setImageBitmap(myBitmap); 
     } 

    }.execute(); 
} 



private class CheckableLayout extends FrameLayout implements Checkable{ 

    private boolean mChecked; 

    public CheckableLayout(Context context) { 
     super(context); 
    } 

    @Override 
    public void setChecked(boolean checked) { 
     mChecked = checked; 
     setForeground(checked ? getResources().getDrawable(R.drawable.blue) : null); 
    } 

    @Override 
    public boolean isChecked() { 
     return mChecked; 
    } 

    @Override 
    public void toggle() { 
     setChecked(!mChecked); 
    } 
} 

public class MultiChoiceModeListener implements 
     GridView.MultiChoiceModeListener { 

    @Override 
    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { 
     final int selectCount = mGridView.getCheckedItemCount(); 
     switch (selectCount){ 
      case 1: 
       mode.setSubtitle("1 Item Selected" + " of 10"); 
       break; 
      default: 
       mode.setSubtitle(" " + selectCount + " items selected" + " of 10"); 

        mIb.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 


          if (selectCount >= 10) { 
           Intent intent = new Intent(MainActivity.this, Show.class); 
           startActivity(intent); 
          } 
          else if (selectCount < 10) { 
           Toast.makeText(getApplicationContext(), "Please select at least 10 images", Toast.LENGTH_LONG).show(); 
          } 
         } 
        }); 


     } 




    } 


    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 

     mode.setTitle("Select Items"); 
     mode.setSubtitle("One Item Selected"); 
     return true; 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return true; 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     return true; 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     Toast.makeText(getApplicationContext(), "text", 1); 
    } 

} 

}

ответ

0

Вы имеете в виду вы хотите, чтобы увидеть предварительный просмотр выбранного изображения?

+0

Да, конечно, @Jas, Можете ли вы мне помочь? – user3567523

+0

До или после добавления в GridView? – Jas

+0

после того, как я получу выбранное изображение из моего GridView, а затем покажу, когда его щелкнули, в новую активность. – user3567523

Смежные вопросы