У меня есть эта проблема при выборе изображения с использованием зависимости 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>
* Когда я изменил GetItem (положение) .getThumbnail() для "HTTP: //some_image_here.png". Я могу видеть картину * Тогда 'getItem (position) .getThumbnail()' возвращает неверный url – Blackbelt
@Arthur Korchagin Спасибо за редактирование. Можете ли вы предложить некоторое решение моей проблемы? –
Как сказал Blackbelt, getThumbnail возвращает неверный URL-адрес, вы должны отладить его и узнать, что возвращает getThumbnail. – Cata