Моя вторая проблема: круговой индикатор также не отображается/не появляется, хотя появляется отлично, когда я пытаюсь загрузить изображения, которые можно рисовать. Но при использовании Glide + URL-адреса круговой индикатор исчезает под макетом viewpager2.
item_photo.xml
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
package com.project.localad;
public class Photo {
String img_url;
String img_txt;
public Photo(String img_url, String img_txt) {
this.img_url = img_url;
this.img_txt = img_txt;
}
public Photo() {
}
public String getImg_url() {
return img_url;
}
public void setImg_url(String img_url) {
this.img_url = img_url;
}
public String getImg_txt() {
return img_txt;
}
public void setImg_txt(String img_txt) {
this.img_txt = img_txt;
}
}
Код: Выделить всё
import java.util.List;
public class PhotoViewPager2Adapter extends RecyclerView.Adapter
{
private List mListPhoto;
Context context;
public PhotoViewPager2Adapter(List mListPhoto, Context context) {
this.mListPhoto = mListPhoto;
this.context = context;
}
@NonNull
@Override
public PhotoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_photo, parent, false);
return new PhotoViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull PhotoViewHolder holder, int position) {
Glide.with(context).load(mListPhoto.get(position).getImg_url())
.disallowHardwareConfig()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
.into(holder.img_photo);
holder.img_text.setText(mListPhoto.get(position).getImg_txt());
holder.img_photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, mListPhoto.get(holder.getLayoutPosition()).getImg_txt(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return mListPhoto.size();
}
public class PhotoViewHolder extends RecyclerView.ViewHolder {
private final ImageView img_photo;
private TextView img_text;
public PhotoViewHolder(@NonNull View itemView) {
super(itemView);
img_photo = itemView.findViewById(R.id.img_photo);
img_text = itemView.findViewById(R.id.img_text);
}
}
}
Код: Выделить всё
public class HomeFragment extends Fragment {
private ViewPager2 mViewPager2;
private List
mListPhoto;
private FragmentHomeBinding binding;
SharedPreferences local_ad_shared_pref;
SharedPreferences.Editor editor;
String pin_code, img_url, img_txt, locationidpk;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
if (mViewPager2.getCurrentItem() == mListPhoto.size() - 1) {
mViewPager2.setCurrentItem(0);
} else {
mViewPager2.setCurrentItem(mViewPager2.getCurrentItem() + 1);
}
}
};
public HomeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentHomeBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
local_ad_shared_pref = getActivity().getSharedPreferences("local_ad_shared_pref", Context.MODE_PRIVATE);
editor = local_ad_shared_pref.edit();
pin_code = local_ad_shared_pref.getString("pin_code", "");
// View Pager 2 Code
mViewPager2 = view.findViewById(R.id.viewPager2_1);
mListPhoto = getListPhoto(pin_code);
PhotoViewPager2Adapter adapter = new PhotoViewPager2Adapter(mListPhoto, getContext());
mViewPager2.setAdapter(adapter);
CircleIndicator3 indicator = view.findViewById(R.id.circleIndicator3_1);
indicator.setViewPager(mViewPager2);
adapter.registerAdapterDataObserver(indicator.getAdapterDataObserver());
mViewPager2.setOffscreenPageLimit(2);
mViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
mHandler.removeCallbacks(mRunnable);
mHandler.postDelayed(mRunnable, 3000);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private List getListPhoto(String pin_code) {
List list = new ArrayList();
Call call = apicontroller.getInstance()
.getApi()
.fetchSliderImages(pin_code);
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
if (response.body() != null) {
}
List obj = response.body();
String url0 = "http://74.225.131.20/localshop/localad/localadhomesliderimages/" + obj.get(0).getImg_url();
String url1 = "http://74.225.131.20/localshop/localad/localadhomesliderimages/" + obj.get(1).getImg_url();
String url2 = "http://74.225.131.20/localshop/localad/localadhomesliderimages/" + obj.get(2).getImg_url();
String url3 = "http://74.225.131.20/localshop/localad/localadhomesliderimages/" + obj.get(3).getImg_url();
String url4 = "http://74.225.131.20/localshop/localad/localadhomesliderimages/" + obj.get(4).getImg_url();
list.add(new Photo(url0, obj.get(0).getImg_txt()));
list.add(new Photo(url1, obj.get(1).getImg_txt()));
list.add(new Photo(url2, obj.get(2).getImg_txt()));
list.add(new Photo(url3, obj.get(3).getImg_txt()));
list.add(new Photo(url4, obj.get(4).getImg_txt()));
}
}
@Override
public void onFailure(Call call, Throwable t) {
Log.d(t.getMessage());
}
});
return list;
}
@Override
public void onPause() {
super.onPause();
mHandler.removeCallbacks(mRunnable);
}
@Override
public void onResume() {
super.onResume();
mHandler.postDelayed(mRunnable, 3000);
}
}
Попробовал приведенные ниже параметры в Glide, ничего не получилось.
.disallowHardwareConfig()
. diskCacheStrategy(DiskCacheStrategy.NONE)
Подробнее здесь: https://stackoverflow.com/questions/792 ... not-visibl