In meiner App habe ich ein Recyclerview-Widget implementiert, um Benutzerbild, Name und Firmennamen zu zeigen. Ich habe die Textinformationen in Realm DB gespeichert und diese Informationen werden direkt nach dem Start der App angezeigt. Zum Laden von Bildern verwende ich die Glide-Bildbibliothek. Aber das Problem ist, dass das Bild nicht direkt nach dem Klick geladen wird, solange ich nicht durch die gesamte Recycleransicht gehe. Wenn ich also nur auf die Recycleransicht klicke, wenn nur die ersten 10 Zeilen angezeigt werden, lädt es nacheinander die ersten Bilder. Und wenn ich dann zu einer anderen Seite zurückkehre und die Internetverbindung nicht vorhanden ist, werden die anderen Bilder nicht geladen. Das Bildfeld ist leer. Gibt es eine Möglichkeit, Bilder schneller mit Glide zu laden?Glide Imgae lädt dauert zu viel Zeit in Recyclerview android
Mein Code in Adapterklasse
public class MyColleaguesAdapter extends RecyclerView.Adapter<MyColleaguesAdapter.ColleagueHolder>{
public static String TAG = MyColleaguesAdapter.class.getSimpleName();
protected RequestManager glideManager; //make glideManager keeping
private List<MyColleagueModel> myColleague;
private Context context;
public interface ColleagueListListener {
}
public MyColleaguesAdapter(List<MyColleagueModel> colleagues,Context context) {
this.context=context;
myColleague = colleagues;
glideManager = Glide.with(context);
}
// create new views (invoked by the layout manager)
@Override
public ColleagueHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.colleage_row,parent,false);
return new ColleagueHolder(view);
}
@Override
public void onBindViewHolder(final ColleagueHolder holder, int position) {
app_preferences = PreferenceManager.getDefaultSharedPreferences(context);
final MyColleagueModel currentColleague = myColleague.get(position);
holder.colleagueName.setText(currentColleague.getName());
holder.companyName.setText(currentColleague.getCompany());
holder.jobTitle.setText(currentColleague.getTitle());
holder.cardView.setCardBackgroundColor(Constant.color);
Glide.with(holder.itemView.getContext())
.load(Constants.HTTP.PHOTO_URL + currentColleague.getMail()
)
.thumbnail(0.5f)
.override(200, 200)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.colleaguePicture);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i=new Intent(context,DetailMyColleague.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("IMAGE_URL",Constants.HTTP.PHOTO_URL + currentColleague.getMail());
context.startActivity(i);
}
});
}
@Override
public int getItemCount() {
return myColleague.size();
}
public class ColleagueHolder extends RecyclerView.ViewHolder{
public CardView cardView;
public ImageView colleaguePicture;
public TextView colleagueName;
public TextView companyName;
public TextView jobTitle;
public ColleagueHolder(View itemView) {
super(itemView);
colleaguePicture= itemView.findViewById(R.id.colleague_picture);
colleagueName= itemView.findViewById(R.id.colleague_name);
companyName= itemView.findViewById(R.id.company_name);
jobTitle= itemView.findViewById(R.id.job_title);
cardView= itemView.findViewById(R.id.cardview_user);
}
}
In Hauptaktivität
private RecyclerView recyclerView;
private MyColleaguesAdapter adapter;
private List<MyColleagueModel> myColleagueList = new ArrayList<>();
private ColleagueController mController;
private ColleagueResApiManager mApiManager;
private Realm colleagueRealm;
private LinearLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mycolleagues_layout);
CookieHandler.setDefault(cookieManager);
colleagueConfigViews();
}
public void colleagueConfigViews() {
recyclerView = this.findViewById(R.id.colleagues_recycler);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(MyColleaguesPage.this));
recyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
colleagueRealm = Realm.getDefaultInstance();
RealmResults<MyColleagueModel> results = colleagueRealm.where(MyColleagueModel.class).findAll();
for (int i = 0; i < results.size(); i++) {
myColleagueList.add(results.get(i));
}
adapter = new MyColleaguesAdapter(myColleagueList,getApplicationContext());
recyclerView.setAdapter(adapter);
}
es einige Zeit dauern wird Bild von URL laden Sie ** ** Platzhalter angezeigt Bild verwenden können beim Laden –
Versuch .override (100, 100) –
@NileshRathod Wie kann ich Verwenden Sie Platzhalter hier. Gibt es einen Vorteil der Verwendung dieser, Sorry, ich bin neu in Android entwickeln – tamrezh21