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

У меня есть 5 пунктов на панели навигации с фрагментом каждого элемента. Я хочу, чтобы мои изображения отображались при каждом нажатии на элемент навигационной панели, который я сохранил в папке для рисования. Я могу отобразить текст, но всякий раз, когда я пытаюсь отобразить изображения с gridview, к сожалению, приложения получают ошибку. Кто-нибудь может мне помочь. Я пытался поместить gridview в acitvity_main.xml и следующий код в MainAcitvity.java

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

    GridView gridView = (GridView) findViewById(R.id.gridView);

    gridView.setAdapter(new ImageAdapter(this));
}

Мои изображения будут отображаться на главной странице, которую я хочу отобразить после нажатия на элемент панели навигации. Примечание. Все 5 элементов на панели навигации предназначены для отображения изображений разных категорий. Короче говоря, у меня есть 10 изображений для каждого из 5 элементов на панели навигации, т.е. 50 изображений в папке для рисования. при щелчке по первому элементу я хочу, чтобы отображалось 10 изображений и 10 изображений при щелчке по второму элементу на панели навигации и т. д.

1 ответ

Если вы используете NavigationDrawer, то лучше всего написать запись recyclerview для каждого фрагмента.

Итак, в каждом фрагменте вы можете добавить код примерно так: [Пожалуйста, учтите, что все определено и инициализировано, и да, я использую Universal Image Loader для загрузки изображений

// Create global configuration and initialize ImageLoader with this config
    ImageLoaderConfiguration config = new 
    ImageLoaderConfiguration.Builder(this).build();
    ImageLoader.getInstance().init(config);

    rv_photo_grid = (RecyclerView) findViewById(R.id.rv_photo_grid);
    GridLayoutManager layoutManager;
    layoutManager = new GridLayoutManager(this, 3);
    rv_photo_grid.setLayoutManager(layoutManager);

    photoUrls.add("image1");
    photoUrls.add("image2");
    photoUrls.add("image3");
    photoUrls.add("image4");
    photoUrls.add("image5");

    photoGridAdapter = new PhotoGridAdapter(this, photoUrls);

    rv_photo_grid.setAdapter(photoGridAdapter);

Ваш адаптер может быть таким:

public class PhotoGridAdapter extends 
RecyclerView.Adapter<PhotoGridAdapter.ItemHolder>  {
private List<String> arraylist;
private Activity mContext;
private boolean isGrid;
ImageLoader imageLoader;

public PhotoGridAdapter(Activity context, List<String> arraylist) {
    this.arraylist = arraylist;
    this.mContext = context;
    imageLoader = ImageLoader.getInstance();
}

@Override
public ItemHolder onCreateViewHolder(ViewGroup viewGroup, int i)              
View v =    LayoutInflater.from(viewGroup.getContext())
                          .inflate(R.layout.item_photo_grid, null);
ItemHolder ml = new ItemHolder(v);
return ml;
}

@Override
public void onBindViewHolder(final ItemHolder itemHolder, int i) {
    imageLoader.displayImage(arraylist.get(i),itemHolder.iv_photo);
}

@Override
public int getItemCount() {
    return (5);
}

public void updateDataSet(List<String> arraylist) {
    this.arraylist = arraylist;
}

public class ItemHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener {
    protected TextView tv_more_images_count, artist;
    protected ImageView iv_photo;
    protected View footer;

    public ItemHolder(View view) {
        super(view);
        this.iv_photo = (ImageView) view.findViewById(R.id.iv_photo);
        tv_more_images_count = (TextView) 
             view.findViewById(R.id.tv_more_images_count);
        view.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
    }
 }   

}

Recyclerview в каждом фрагменте может выглядеть так:

 <RelativeLayout
        android:id="@+id/relativelayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_photo_grid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />


    </RelativeLayout>

И item_photo_grid.xml будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:gravity="center"
android:orientation="vertical">

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/iv_photo"
    android:layout_width="fill_parent"
    android:layout_height="150dp"
    android:scaleType="fitXY"
    app:srcCompat="@drawable/default_placeholder" />

Надеюсь, это поможет!

Удачного кодирования ^_^