2015-12-02 3 views
-1

У меня есть эта проблема при выборе изображения с использованием зависимости Picasso. Но когда я получать другие строки, они отображаются на моем андроида app.Here мои коды:Изображение не отображается с использованием Picasso в android

ListAdapter.java

public class ListAdapter extends ArrayAdapter<Restaurant> { 
    public ListAdapter(Context context, int resource) { 
     super(context, resource); 
    } 
    @Override 
    public View getView(int position,View convertView, ViewGroup parent){ 
     ViewHolder holder; 
     if (convertView == null){ 
      holder = new ViewHolder(); 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.fragment_list,parent,false); 
      holder.name = (TextView)convertView.findViewById(R.id.name); 
      holder.type = (TextView)convertView.findViewById(R.id.type); 
      holder.thumbnail = (ImageView)convertView.findViewById(R.id.thumbnail); 

      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)convertView.getTag(); 
     } 


     holder.name.setText(getItem(position).getName()); 
     holder.type.setText(getItem(position).getType()); 
     Picasso.with(getContext()).load(getItem(position).getThumbnail()).into(holder.thumbnail); 

     return convertView; 
    } 
    class ViewHolder{ 
     ImageView thumbnail; 
     TextView name; 
     TextView type; 
    } 
} 

Когда я изменил GetItem (положение) .getThumbnail() к «http://some_image_here.png» Я может видеть картину.

Restaurant.java

public class Restaurant implements Parcelable { 
    private String name; 
    private String type; 
    private String description; 
    private String thumbnail; 
    private String image; 

    public Restaurant(){ 

    } 
    public Restaurant(String name, String type, String description, String thumbnail, String image){ 
     this.name = name; 
     this.type = type; 
     this.description = description; 
     this.thumbnail = thumbnail; 
     this.image = image; 
    } 
    public Restaurant(Parcel source){ 
     name = source.readString(); 
     type = source.readString(); 
     description = source.readString(); 
     thumbnail = source.readString(); 
     image = source.readString(); 
    } 
    public String getImage() { 
     return image; 
    } 

    public void setImage(String image) { 
     this.image = image; 
    } 

    public String getThumbnail() { 
     return thumbnail; 
    } 

    public void setThumbnail(String thumbnail) { 

     this.thumbnail = thumbnail; 
    } 

    public String getDescription() { 

     return description; 
    } 

    public void setDescription(String description) { 

     this.description = description; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     applyDefaultValues(); 

     dest.writeString(name); 
     dest.writeString(type); 
     dest.writeString(description); 
     dest.writeString(image); 
     dest.writeString(thumbnail); 
    } 

    private void applyDefaultValues() { 
     if(name == null) 
      name=""; 
     if(type == null) 
      type =""; 
     if(description == null) 
      description = ""; 
     if(image == null) 
      image = ""; 
     if(thumbnail == null) 
      thumbnail = ""; 
    } 
    public static Creator<Restaurant>CREATOR = new Creator<Restaurant>() { 
     @Override 
     public Restaurant createFromParcel(Parcel source) { 

      return new Restaurant(source); 
     } 

     @Override 
     public Restaurant[] newArray(int size) { 

      return new Restaurant[size]; 
     } 
    }; 
} 

А вот мои коды fragment_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="horizontal" 
tools:context="com.findmerest.fragment.ListRestFragment"> 

<ImageView 
    android:id="@+id/thumbnail" 
    android:layout_width="64dp" 
    android:layout_height="64dp"/> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/name" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"/> 

    <TextView 
     android:id="@+id/type" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Может кто-то пожалуйста, скажите мне, что случилось в моем коде?

включает ListRestFragment: список

public class ListRestFragment extends ListFragment { 

private ListAdapter mAdapter; 
public static ListRestFragment getInstance(){ 
    ListRestFragment fragment = new ListRestFragment(); 
    return fragment; 
} 
@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState){ 
    super.onActivityCreated(savedInstanceState); 

    setListShown(false); 
    mAdapter = new ListAdapter(getActivity(),0); 

    RestAdapter adapter = new RestAdapter.Builder() 
      .setEndpoint(getString(R.string.restaurant_list)) 
      .build(); 
    RestaurantApiInterface restaurantApiInterface = adapter.create(RestaurantApiInterface.class); 
    restaurantApiInterface.getStreams(new Callback<List<Restaurant>>() { 
     @Override 
     public void success(List<Restaurant> restaurants, Response response) { 
      if (restaurants == null || restaurants.isEmpty()) { 
       return; 
      } 
      for (Restaurant restaurant : restaurants) { 
       mAdapter.add(restaurant); 
      } 
      mAdapter.notifyDataSetChanged(); 
      setListAdapter(mAdapter); 
      setListShown(true); 
     } 

     @Override 
     public void failure(RetrofitError error) { 
      Log.e("Restaurant", "error" + error.getMessage()); 
     } 
    }); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Intent intent = new Intent(getActivity(), ListRestDetailActivity.class); 
    intent.putExtra(ListRestDetailActivity.EXTRA_RESTAURANT,mAdapter.getItem(position)); 

    startActivity(intent); 
} 

}

ресторана:

<string name="restaurant_list">https://gist.githubusercontent.com/jayGorio/23fed06b792dd59ccc60/raw/ba7e3943c01703f032692b363088be519e022399</string> 
+5

* Когда я изменил GetItem (положение) .getThumbnail() для "HTTP: //some_image_here.png". Я могу видеть картину * Тогда 'getItem (position) .getThumbnail()' возвращает неверный url – Blackbelt

+0

@Arthur Korchagin Спасибо за редактирование. Можете ли вы предложить некоторое решение моей проблемы? –

+0

Как сказал Blackbelt, getThumbnail возвращает неверный URL-адрес, вы должны отладить его и узнать, что возвращает getThumbnail. – Cata

ответ

-1

Просто используйте Log.d ("ImageUrl", GetItem (положение) .getThumbnail(). toString()) и увидеть, как Log будет получать, если он возвращает действительный или недопустимый URL.

: D

+0

Он не отображает, действителен ли URL. Но он возвращает ошибку, когда я нажимаю на страницу. –

0

попробовать:

Picasso.with(getContext()) 
     .load(new File(getItem(position).getThumbnail())) 
     .into(holder.thumbnail); 
+0

У меня была эта ошибка: 12-02 22: 57: 04.334 16665-16665/com.findmerest E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at java.io.File.fixSlashes (File.java:185) на java.io.File. (File.java:134) at com.findmerest.adapter.ListAdapter.getView (ListAdapter.java:44) на android.widget.AbsListView.obtainView (AbsListView.java:2159) на android.widget.ListView. makeAndAddView (ListView.java: 1831) –

+0

попытайтесь напечатать его как '' Log.e ("ImageUrl", getItem (position) .getThumbnail()); 'и увидеть журналы красного цвета, что является областью печати ImageUrl. –

+0

и проблема в том, что ... вы получаете нуль. проверьте полученные данные. –

Смежные вопросы