Нужно ли создавать другое действие внутри фрагмента, чтобы отображать изображения при нажатии на элемент панели навигации?
У меня есть 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" />
Надеюсь, это поможет!
Удачного кодирования ^_^