Android 每次刷新后,RecyclerView CardLayout图像的大小变小

Android 每次刷新后,RecyclerView CardLayout图像的大小变小,android,android-recyclerview,android-tablayout,cardlayout,Android,Android Recyclerview,Android Tablayout,Cardlayout,我在一个有5个选项卡的表格布局上使用RecyclerView和CardLayout,每个选项卡都表示为一个片段。每当我单击选项卡时,我首先检查片段是否可见。如果为true,则执行UI代码,该代码涉及调用REST服务从db获取数据,然后由自定义适配器填充到RecyclerView。我临时将数据缓存在ArrayList中,这样频繁尝试片段就不需要另一个REST请求。我的问题是,每当我不止一次导航到某个选项卡时,每次尝试后,布局都会变得越来越小。下面是我的片段、适配器和适配器布局 public cla

我在一个有5个选项卡的表格布局上使用RecyclerView和CardLayout,每个选项卡都表示为一个片段。每当我单击选项卡时,我首先检查片段是否可见。如果为true,则执行UI代码,该代码涉及调用REST服务从db获取数据,然后由自定义适配器填充到RecyclerView。我临时将数据缓存在ArrayList中,这样频繁尝试片段就不需要另一个REST请求。我的问题是,每当我不止一次导航到某个选项卡时,每次尝试后,布局都会变得越来越小。下面是我的片段、适配器和适配器布局

public class BeerFragment extends Fragment {
    private RecyclerView recyclerView;
    ProgressDialog pd;
    private View rootView;
    private static final String TAG = BeerFragment.class.getSimpleName();
    public static boolean isLoadedBeer = false;
    public boolean instantiated = false;
    public BeerFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        rootView  = inflater.inflate(R.layout.activity_main2, container, false);
        initViews();
        return rootView;
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser && MaintainState.isLoadedBeer) {
            initViews();
        } else if (isVisibleToUser && !MaintainState.isLoadedBeer) {
        } else if (!isVisibleToUser && MaintainState.isLoadedBeer){
        } else if (!isVisibleToUser && !MaintainState.isLoadedBeer){
            MaintainState.isLoadedBeer = true;
        }
    }

    private void initViews(){
        pd = new ProgressDialog(getActivity());
        pd.setMessage("Fetching Beer...");
        pd.setCancelable(false);
        pd.show();
        Log.d("snopww4","noppww");
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }

        recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
        ArrayList albumList = new ArrayList<>();
        GalleryAdapter  adapter = new GalleryAdapter(getActivity(), albumList,2);
        RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, GridSpacingItemDecoration.dpToPx(getActivity(), 10), true));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(adapter);

        if (!isLoadedBeer) {
            Log.d("lklk","lklk");
        String drink = FilterFragment.sorted;
        if (drink.equals("empty")){
            loadBeer("beer");
            FilterFragment.sorted = "empty";
        } else if (drink.equals("lager")){
            loadBeer("lager");
            FilterFragment.sorted = "empty";
        } else if (drink.equals("stout")){
            loadBeer("stout");
            FilterFragment.sorted = "empty";
        } else if (drink.equals("malt")){
            loadBeer("malt");
            FilterFragment.sorted = "empty";
        } else {
            pd.hide();
        }
    } else {
        recyclerView.setAdapter(new GalleryAdapter(getActivity(), MaintainState.getItemsBeer(), 1));
        recyclerView.smoothScrollToPosition(0);
        pd.hide();
    }
    }

    private void loadBeer(final String item){
        try{
            Client Client = new Client();
            Service apiService = Client.getClient().create(Service.class);
            Call<GalleryResponse> call = apiService.getBeer(item);
            call.enqueue(new Callback<GalleryResponse>() {
                @Override
                public void onResponse(Call<GalleryResponse> call, Response<GalleryResponse> response) {
                    List<Gallery> items = response.body().getBeer();
                    recyclerView.setAdapter(new GalleryAdapter(getActivity(), items, 2));
                    recyclerView.smoothScrollToPosition(0);
                    MaintainState.setItemsBeer(items);
                    isLoadedBeer = true;
                    pd.hide();
                }

                @Override
                public void onFailure(Call<GalleryResponse> call, Throwable t) {
                    pd.hide();

                }
            });
        }catch (Exception e){
        }
    }
}



public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.MyViewHolder> {

    private Context mContext;
    private List<Gallery> albumList;
    private int tabPosition;
    private LocalStore localStore;
    private static final String TAG = GalleryAdapter.class.getSimpleName();

    public GalleryAdapter(Context mContext, List<Gallery> albumList, int tabPosition) {
        Log.i(TAG, "INIT GalleryAdapter");
        this.mContext = mContext;
        this.albumList = albumList;
        this.tabPosition = tabPosition;
        localStore = new LocalStore(mContext);
    }


    @Override
    public GalleryAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.album_card2, viewGroup, false);
        CardView cardView = (CardView) view.findViewById(R.id.card_view);
        cardView.setMaxCardElevation(GridSpacingItemDecoration.dpToPx(mContext, 10));
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final GalleryAdapter.MyViewHolder viewHolder, int i) {
        viewHolder.title.setText(albumList.get(i).getName());
        viewHolder.title.setTypeface(Display.displayTypefaceCabin(mContext, 1), Typeface.BOLD);
        viewHolder.count.setText("Ksh "+albumList.get(i).getPrice());
        viewHolder.count.setTypeface(Display.displayTypefaceWalkWay(mContext, 1), Typeface.BOLD);
        viewHolder.tag.setTypeface(Display.displayTypefaceOpenSansCondensed(mContext, 1), Typeface.BOLD);

        Glide.with(mContext).
                load(albumList.get(i).getThumbnail()).
                placeholder(R.drawable.placeholder).
                error(R.drawable.placeholder).
                fitCenter().
                into(viewHolder.thumbnail);
    }

    @Override
    public int getItemCount() {
        return albumList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title, count, tag;
        public ImageView thumbnail, favourite;

        public MyViewHolder(final View view) {
            super(view);
            tag = (TextView) view.findViewById(R.id.tag);
            title = (TextView) view.findViewById(R.id.title);
            count = (TextView) view.findViewById(R.id.count);
            thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
            favourite = (ImageView) view.findViewById(R.id.favourite);

            thumbnail.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                }
            });
        }
    }
}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:background="#f2f5f7"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_marginLeft="-10dp"
        card_view:cardCornerRadius="10dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:background="@drawable/image_view_drop_shadow"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/tag"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingTop="3dp"
                android:paddingBottom="3dp"
                android:text="hello"
                android:textColor="@color/white"
                android:textSize="12dp"/>

            <ImageView
                android:id="@+id/favourite"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="5dp"
                android:layout_alignParentRight="true"/>

            <ImageView
                android:id="@+id/thumbnail"
                android:layout_width="match_parent"
                android:layout_height="220dp"
                android:clickable="true"
                android:scaleType="fitXY" />

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/thumbnail"
                android:gravity="center"
                android:textColor="#000000"
                android:paddingBottom="5dp"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/count"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"
                android:gravity="center"
                android:paddingBottom="15dp"
                android:textSize="14sp" />

        </RelativeLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>
公共类BeerFragment扩展片段{
私人回收站;
进展性帕金森病;
私有视图rootView;
私有静态最终字符串标记=BeerFragment.class.getSimpleName();
公共静态布尔值isLoadedBeer=false;
公共布尔实例化=false;
公共啤酒厂(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
设置选项菜单(真);
rootView=充气机。充气(R.layout.activity_main2,容器,错误);
initViews();
返回rootView;
}
@凌驾
public void setUserVisibleHint(布尔值isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser&&MaintainState.isLoadedBeer){
initViews();
}else if(isVisibleToUser&!maintaintState.isLoadedBeer){
}如果(!isVisibleToUser&&MaintainState.isLoadedBeer)为else,则为{
}如果(!isVisibleToUser&!MaintainState.isLoadedBeer)为else,则为{
maintaintState.isLoadedBeer=true;
}
}
私有void initViews(){
pd=新建进度对话框(getActivity());
设置消息(“获取啤酒…”);
pd.可设置可取消(假);
pd.show();
Log.d(“snopww4”、“noppww”);
试一试{
}捕获(例外e){
e、 printStackTrace();
}
recyclerView=(recyclerView)rootView.findviewbyd(R.id.recycler\u视图);
ArrayList albumList=新建ArrayList();
GalleryAdapter=新的GalleryAdapter(getActivity(),albumList,2);
RecyclerView.LayoutManager mLayoutManager=新的GridLayoutManager(getActivity(),2);
recyclerView.setLayoutManager(mLayoutManager);
addItemDecoration(新的GridSpacingItemDecoration(2,GridSpacingItemDecoration.dpToPx(getActivity(),10),true));
setItemAnimator(新的DefaultItemAnimator());
recyclerView.setAdapter(适配器);
如果(!isLoadedBeer){
Log.d(“lklk”、“lklk”);
字符串drink=FilterFragment.sorted;
如果(喝等于(“空”)){
装载啤酒(“啤酒”);
FilterFragment.sorted=“空”;
}否则,如果(喝等量的“啤酒”)){
装载啤酒(“啤酒”);
FilterFragment.sorted=“空”;
}否则,如果(喝等同于(“烈性酒”)){
啤酒(“烈性啤酒”);
FilterFragment.sorted=“空”;
}否则,如果(喝等同于(“麦芽”)){
啤酒(“麦芽”);
FilterFragment.sorted=“空”;
}否则{
pd.hide();
}
}否则{
setAdapter(新的GalleryAdapter(getActivity(),maintaintState.getItemsBeer(),1));
recyclerView.smoothScrollToPosition(0);
pd.hide();
}
}
专用void loadBeer(最终字符串项){
试一试{
客户端=新客户端();
服务apiService=Client.getClient().create(Service.class);
Call Call=apiService.getBeer(项目);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
列表项=response.body().getBeer();
setAdapter(新的GalleryAdapter(getActivity(),items,2));
recyclerView.smoothScrollToPosition(0);
maintaintState.setItemsBeer(项目);
isLoadedBeer=true;
pd.hide();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
pd.hide();
}
});
}捕获(例外e){
}
}
}
公共类GalleryAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人名单;
私人职位;
私有本地存储本地存储;
私有静态最终字符串标记=GalleryAdapter.class.getSimpleName();
公共GalleryAdapter(上下文mContext、列表albumList、int-tabPosition){
Log.i(标记“INIT GalleryAdapter”);
this.mContext=mContext;
this.albumList=albumList;
this.tabPosition=tabPosition;
localStore=新的localStore(mContext);
}
@凌驾
public GalleryAdapter.MyViewHolder onCreateViewHolder(视图组视图组,int i){
View=LayoutFlater.from(viewGroup.getContext())
.充气(R.layout.album_card2,视图组,假);
cardwiew cardwiew=(cardwiew)view.findviewbyd(R.id.card\u视图);
setMaxCardElevation(GridSpacingItemDecoration.dpToPx(mContext,10));
返回新的MyViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(最终GalleryAdapter.MyViewHolder viewHolder,int i){
viewHolder.title.setText(albumList.get(i.getName());
viewHolder.title.setTypeface(Display.displayTypefacecab(mContext,1),Typeface.BOLD);
viewHolder.count.setText(“Ksh”+albumList.get(i.getPrice());
viewHolder.count.setTypeface(Display.displayTypeface走道(mContext,1),Typeface.BOLD);
viewHolder.tag.setTypeface(Display.displayTypeface)(mContext,1),Typeface.BOLD);
滑翔
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
        recyclerView.setLayoutManager(mLayoutManager);
 recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, GridSpacingItemDecoration.dpToPx(getActivity(), 10), true));
@Override
public void onBindViewHolder(VH holder, int position) {
  Glide.with(fragment)
    .load(urls.get(position))
    .into(new DrawableImageViewTarget(holder.imageView, /*waitForLayout=*/ true));
GlideApp.with(context)
                        .load(imageUrl)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .into(new ViewTarget<ImageView, Drawable>(holder.imageView) {
                            @Override
                            public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                                holder.imageView.setImageDrawable(resource);
                            }
                        }
                        .waitForLayout());