как проверить нулевое значение при модернизации - PullRequest
0 голосов
/ 04 октября 2018

Я использую Picasso для загрузки изображения в моем приложении.Я получаю нулевое значение для изображения из сервиса.Как обрабатывать нулевое значение.

мой код:

if(reviewdata.get(position).user.getPhotoUrl().isEmpty() || reviewdata.get(position).user.getPhotoUrl() == null){
               Picasso.with(getApplicationContext()).load(R.drawable.profile)
                       .into(viewHolder.user_image);
            }else if(reviewdata.get(position).user.getPhotoUrl() != null){
            Picasso.with(getApplicationContext()).load(reviewdata.get(position).user.getPhotoUrl()).placeholder(R.drawable.profile)
                    .into(viewHolder.user_image);}

ошибка:

10-04 08:42:43.653 23300-23300/ E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.restosapp.restoss, PID: 23300
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
        at .listing.DetailpageActivtiy$Reviewpageadapter.onBindViewHolder(DetailpageActivtiy.java:1198)
        at cooss.listing.DetailpageActivtiy$Reviewpageadapter.onBindViewHolder(DetailpageActivtiy.java:1172)
        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)

Ответы [ 4 ]

0 голосов
/ 04 октября 2018

Нет необходимости проверять нулевые значения с помощью Пикассо.Picasso достаточно умен, он будет обрабатывать нулевые значения.

Picasso.with(getApplicationContext()).load(reviewdata.get(position).user.getPhotoUrl()).placeholder(R.drawable.profile).into(viewHolder.user_image);}

Если URL пуст или пуст, он покажет placeholder изображение.

0 голосов
/ 04 октября 2018

Первый приоритет. Если условие истинно, сделайте что-то вроде этого:

if(reviewdata.get(position).user.getPhotoUrl()!=null && !reviewdata.get(position).user.getPhotoUrl().isEmpty())
{

  Picasso.with(getApplicationContext()).load(reviewdata.get(position).user.getPhotoUrl()).placeholder(R.drawable.profile)
                .into(viewHolder.user_image);}
}
else 
{
 Picasso.with(getApplicationContext()).load(R.drawable.profile)
                   .into(viewHolder.user_image);
}

Это решит вашу проблему

0 голосов
/ 04 октября 2018

Попробуйте:

 public boolean isEmpty(String s) {
               return s.trim().equals("") || s == null || s.isEmpty() || s.equals("null");
       }
if(!isEmpty(reviewdata.get(position).user.getPhotoUrl())){
 Picasso.with(getApplicationContext()).load(reviewdata.get(position).user.getPhotoUrl()).placeholder(R.drawable.profile)
                    .into(viewHolder.user_image);
}
else{
 Picasso.with(getApplicationContext()).load(R.drawable.profile)
                       .into(viewHolder.user_image);
}
0 голосов
/ 04 октября 2018

Измените условия заказа в if

if(reviewdata.get(position).user.getPhotoUrl() == null || reviewdata.get(position).user.getPhotoUrl().isEmpty() )
...