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