2016-02-09 3 views
0

В основном это простая в решении проблема, но я просто не могу понять. Я получил a grid of images (из выталкиваемой папки) в фрагменте, и каждое изображение должно отображаться в полноэкранном режиме, нажав. это та часть, которую я не могу достичь. ! :(android studio set onclicklistener показать полное изображение

Я скачал Пикассо, но я не знаю, как использовать его на всех @ _ @

Пожалуйста, помогите мне, что это мой первый андроид приложение, это очень много значит для меня.: D

Фрагмент, который содержит изображения

public class Fragment2 extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment2, container, false); 
    GridView gridView = (GridView) view.findViewById(R.id.gridview); 
    gridView.setAdapter(new ImageAdapter(getActivity().getApplicationContext())); 

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, 
           int position, long id) { 

      //Intent intent = new Intent(getActivity(), DetailsActivity.class); 
      //startActivity(intent); 

     } 
    }); 

    return view; 
} 
} 

изображение адаптер

public class ImageAdapter extends BaseAdapter { 
private final List<Item> mItems = new ArrayList<Item>(); 
private final LayoutInflater mInflater; 

public ImageAdapter(Context context) { 
    mInflater = LayoutInflater.from(context); 

    mItems.add(new Item(R.drawable.t1)); 
    mItems.add(new Item(R.drawable.t2)); 
    mItems.add(new Item(R.drawable.t3)); 
    mItems.add(new Item(R.drawable.t4)); 
    mItems.add(new Item(R.drawable.t5)); 
    mItems.add(new Item(R.drawable.t6)); 
    mItems.add(new Item(R.drawable.t7)); 
    mItems.add(new Item(R.drawable.t8)); 
    mItems.add(new Item(R.drawable.t9)); 
    mItems.add(new Item(R.drawable.t10)); 
    mItems.add(new Item(R.drawable.t11)); 
    mItems.add(new Item(R.drawable.t12)); 
    mItems.add(new Item(R.drawable.t13)); 
    mItems.add(new Item(R.drawable.t14)); 
    mItems.add(new Item(R.drawable.t15)); 
    mItems.add(new Item(R.drawable.t16)); 
    mItems.add(new Item(R.drawable.t17)); 
    mItems.add(new Item(R.drawable.t18)); 
    mItems.add(new Item(R.drawable.t19)); 
    mItems.add(new Item(R.drawable.t20)); 
    mItems.add(new Item(R.drawable.t21)); 
    mItems.add(new Item(R.drawable.t22)); 
} 

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

@Override 
public Item getItem(int i) { 
    return mItems.get(i); 
} 

@Override 
public long getItemId(int i) { 
    return mItems.get(i).drawableId; 
} 

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View v = view; 
    ImageView picture; 

    if (v == null) { 
     v = mInflater.inflate(R.layout.grid_item, viewGroup, false); 
     v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
    } 

    picture = (ImageView) v.getTag(R.id.picture); 

    Item item = getItem(i); 

    picture.setImageResource(item.drawableId); 

    return v; 
} 

private static class Item { 
    public final int drawableId; 

    Item(int drawableId) { 
     this.drawableId = drawableId; 
    } 
} 
} 

DetailActivity (содержать изображения в полноэкранном режиме)

public class DetailsActivity extends AppCompatActivity { 

//public static final String EXTRA_IMAGE = "extra_image"; 

//private ImageView nImageView; 

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

} 
} 
+0

изображения в большинстве учебных пособий из сети (URL), но моя из папки с возможностью выбора, и я не знаю, как преобразовать связанный код в соответствии с моими потребностями. – plood

+0

Попробуйте 'Picasso.with (context) .load (R.drawable.drawableName) .into (imageView);' для загрузки чертежей в picasso – Lal

+0

@Lal dude я знаю этот синтаксис, но я не знаю, куда положить .. – plood

ответ

0

Я надеюсь, что я правильно понял, что вы просили ...

В вашем фрагменте:

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View v, 
          int position, long id) { 

     Intent intent = new Intent(getActivity(), DetailsActivity.class); 
     intent.putExtra(DetailsActivity.EXTRA_IMAGE , position); 
     startActivity(intent); 
    } 
}); 

Детали активность:

public class DetailsActivity extends AppCompatActivity { 
    public static final String EXTRA_IMAGE = "extra_image"; 
    private ImageView nImageView; 

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

     Bundle bundle = getIntent().getExtras(); 
     if (bundle != null) { 
      int positionClicked = bundle.getInt(EXTRA_IMAGE); 
     } 
     nImageView = (ImageView) findViewById(R.id.yourImageView); 

     int imageResId = HERE YOU SHOULD PUT IMAGE RESUORCE BASED ON POSITION 

     Picasso.with(this) 
       .load(imageResId) 
       .into(nImageView); 
    }   
} 

============== ОБНОВЛЕНИЕ ========================= ===

//int imageResId = HERE YOU SHOULD PUT IMAGE RESUORCE BASED ON POSITION 

int imageResId = 0; 

switch(positionClicked) { 
    case 0: 
     imageResId = R.drawable.t1; 
     break; 
    case 1: 
     imageResId = R.drawable.t2; 
     break; 

    ... 

} 
+0

чувак, спасибо за ответ! но я сбиваю с толку утверждение 'int imageResId = ЗДЕСЬ, ЧТО ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОЗИЦИИ', я только что проверил ** РЕСУРСНУЮ ЗАГРУЗКУ ** в [Picasso] (http://square.github.io/picasso/) но ни одно из них не соответствует утверждению. не могли бы вы привести мне пример? – plood

+0

Пример: int imageResId = R.drawable.t1; – Alexey

+0

чувак. оно работает! но я могу установить только одно значение для imageResId, если я объявляю 'int imageResId = R.drawable.t1;', то независимо от того, какие изображения я нажимаю в gridview, отображается только 't1', и мне нужны эти изображения могут отображаться как [demo] (https://www.youtube.com/watch?v=fIX4SnBLaZg). Я попытался использовать Integer [] вместо int, но он не сработал. :( – plood

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