如何在MovieAdapter的Viewholder中加载图像?
主要代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.movie); lv =(ListView)findViewById(R.id.lstMovieData); moviename.clear(); // tv = (TextView) findViewById(R.id.tv); Bundle b = getIntent().getExtras(); try { Title = b.getString("MOVIE"); t = replace(Title); } catch (Exception e) { } String API = "https://api.cinemalytics.com/v1/movie/title/?value=" + t + "&auth_token="; Toast.makeText(getApplicationContext(), Title, Toast.LENGTH_LONG).show(); OkHttpClient Client = new OkHttpClient(); Request request = new Request.Builder() .url(API).build(); Call call = Client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(final Response response) throws IOException { try { String json = response.body().string(); Log.v(TAG, json); if (response.isSuccessful()) { getDATA(json); runOnUiThread(new Runnable() { @Override public void run() { mAdapter = new MovieAdapter(getApplicationContext(),moviename); lv.setAdapter(mAdapter); } }); } else { } } catch (Exception e) { } } }); } public String replace(String str) { return str.replaceAll(" ", "%20"); } private void getDATA(String json) throws JSONException { try { moviename = new ArrayList(); Currentmovie c = new Currentmovie(); String story = "About The Story"; JSONArray values = new JSONArray(json); for(int i = 0; i < values.length(); i++) { JSONObject jsonObject = values.getJSONObject(i); String movieTitle = jsonObject.getString("Title"); String disc = jsonObject.getString("Description"); Log.e(TAG,"GIRISH"+movieTitle); c= new Currentmovie(); c.setTitle("Movie Name::"+movieTitle); c.setDesc(story+"::\n"+disc); if(jsonObject.getString("Description")==null) { c.setDesc(story+"::Not Available"); } moviename.add(c); } } catch (Exception e) { System.out.println("Error in Result as " + e.toString()); } }
2.MovieAdapter.java
public class MovieAdapter extends BaseAdapter { Context context; private List movieData; private static LayoutInflater inflater = null; public MovieAdapter( Context context,List movieData) { this.context = context; this.movieData = movieData; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return movieData.size(); } @Override public Object getItem(int position) { return movieData.get(position); } @Override public long getItemId(int position) { return position; } public static class ViewHolder{ public TextView movieTitle,movieDesc; public ImageView movieImage; } public View getView(int position, View convertView, ViewGroup parent) { View vi = convertView; ViewHolder holder; if(convertView==null){ vi = inflater.inflate(R.layout.row, null); holder = new ViewHolder(); holder.movieTitle = (TextView) vi.findViewById(R.id.tv); holder.movieDesc=(TextView)vi.findViewById(R.id.tv1); vi.setTag( holder ); } else holder=(ViewHolder)vi.getTag(); holder.movieTitle.setText(movieData.get(position).getTitle()); holder.movieDesc.setText(movieData.get(position).getDesc()); return vi; } }
//我可以成功显示除图像之外的所有数据
//图片链接带有“posterpath”键
//告诉我如何在MovieAdapter的视图中加载图像
// currentmovie只是一个getter和setter类
3.Currentmovie.java
public class Currentmovie { private String mTitle; private String Description; public String getDesc() { return Description; } public void setDesc(String desc) { Description = desc; } public String getTitle() { return mTitle; } public void setTitle(String title) { mTitle = title; } }
我正在使用这个库并加载图像
首先创建Display选项对象
DisplayImageOptions builder = new DisplayImageOptions.Builder() .cacheOnDisk(true) .showImageOnLoading(R.drawable.empty_photo) .showImageForEmptyUri(R.drawable.empty_photo) .build();
然后初始化图像加载器
ImageLoader imageLoader = ImageLoader.getInstance();
和加载图像
imageLoader.displayImage(url, imageView, builder);
希望这会有所帮助..也可以将此添加到您的gradle中
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
请先参考
编辑:将此添加到活动的onCreate()
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) ... .build(); ImageLoader.getInstance().init(config);
或这个
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(Activity.this));
为您的图像添加getter和setter方法
public String getImageUrl() { return imageUrl; } public void setImageUrl(String imgUrl) { imageUrl= imgUrl; }
将Picasso库添加到项目后,在适配器类中添加此代码:
String imageUrl = movieData.get(position).getImageUrl(); Picasso.with(getContext()) .load(imageUrl) .into(holder.movieImage, new com.squareup.picasso.Callback() { @Override public void onSuccess() { } @Override public void onError() { } });
- 签署Android应用程序抛出IOException:找到冗余长度字节
- 在Android中加载大文本
- AES 256-CBC上的密钥和iv问题
- javafx:javafx.scene.layout.AnchorPane无法强制转换为javafx.scene.layout.BorderPane
- 以编程方式为场景中的按钮设置onClickListeners
- NetworkInfo无法正确响应运行Nougat的手机上的网络更改
- BadPaddingException解密Android中的加密数据
- LG G3手机的Android 6.0 HTTPClient问题
- Android蓝牙java.io.IOException:bt socket关闭,读取返回:-1