Java 从TMDB获取图像,而不是预设数据
感谢您在上一篇帖子中回复我的朋友() 我终于找到了如何在GridView上显示图像,下面是代码Java 从TMDB获取图像,而不是预设数据,java,android,json,gridview,android-asynctask,Java,Android,Json,Gridview,Android Asynctask,感谢您在上一篇帖子中回复我的朋友() 我终于找到了如何在GridView上显示图像,下面是代码 public class MainActivity extends AppCompatActivity { private MyAdapter mMovieAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont
public class MainActivity extends AppCompatActivity {
private MyAdapter mMovieAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] imgUrllink = new String[]{
"http://image.tmdb.org/t/p/w342/sM33SANp9z6rXW8Itn7NnG1GOEs.jpg",
"http://image.tmdb.org/t/p/w342/5JU9ytZJyR3zmClGmVm9q4Geqbd.jpg",
"http://image.tmdb.org/t/p/w342/y31QB9kn3XSudA15tV7UWQ9XLuW.jpg",
"http://image.tmdb.org/t/p/w342/zSouWWrySXshPCT4t3UKCQGayyo.jpg",
"http://image.tmdb.org/t/p/w342/weUSwMdQIa3NaXVzwUoIIcAi85d.jpg",
"http://image.tmdb.org/t/p/w342/bIXbMvEKhlLnhdXttTf2ZKvLZEP.jpg",
"http://image.tmdb.org/t/p/w342/hGRfWcy1HRGbsjK6jF7NILmqmFT.jpg",
"http://image.tmdb.org/t/p/w342/cGOPbv9wA5gEejkUN892JrveARt.jpg",
"http://image.tmdb.org/t/p/w342/6FxOPJ9Ysilpq0IgkrMJ7PubFhq.jpg",
"http://image.tmdb.org/t/p/w342/kqjL17yufvn9OVLyXYpvtyrFfak.jpg"};
mMovieAdapter = new MyAdapter(this, imgUrllink);
GridView gridview = (GridView) findViewById(R.id.gridView);
gridview.setAdapter(mMovieAdapter);
ImageView img = (ImageView) findViewById(R.id.imageItem);
new DownloadImageTask(img);
}
}
public class MyAdapter extends ArrayAdapter<String>{
private final Activity context;
public MyAdapter(Activity context, String[] imgUrlList){
super(context,0, imgUrlList);
this.context = context;
}
public View getView (int position, View convertview, ViewGroup parent){
ImageView view = (ImageView) convertview;
if (view == null){
view = new ImageView(context);
}
String url = getItem(position);
Picasso.with(context).load(url).into(view);
return view;
}
}
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
String LOG_TAG = DownloadImageTask.class.getSimpleName();
ImageView poster;
public DownloadImageTask(ImageView img) {
this.poster = img;
}
protected Bitmap doInBackground(String... urls){
String imageUrls = urls[0];
Bitmap moviePoster = null;
try {
InputStream in = new java.net.URL(imageUrls).openStream();
moviePoster = BitmapFactory.decodeStream(in);
} catch (Exception r) {
Log.e("Error", r.getMessage());
r.printStackTrace();
}
return moviePoster;
}
@Override
protected void onPostExecute(Bitmap result) {
poster.setImageBitmap(result);
}
}
我现在计划将代码从预设链接更改为从Json获取链接。然而,这不是工作。您能建议我如何更改吗?
公共类下载ImageTask扩展异步任务{
String LOG_TAG=DownloadImageTask.class.getSimpleName();
ImageView海报;
字符串[]posterPath;
公共下载ImageTask(ImageView img,字符串[]imgurlink){
this.poster=img;
this.posterPath=imgurlink;
}
私有字符串[]getPosterPathFromJson(字符串预测JSONSTR)抛出JSONException{
最终字符串MOVIE_LIST=“results”;
最终字符串电影\u POSTER=“POSTER\u path”;
JSONObject forecastJson=新的JSONObject(forecastJsonStr);
JSONArray posterArray=forecastJson.getJSONArray(电影列表);
字符串[]resultStrs=新字符串[16];
for(int i=0;i
使用此代码从服务器检索json字符串
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost(your URL);
// Depends on your web service
httppost.setHeader("Content-type", "application/json");
InputStream inputStream = null;
String result = null;
try {
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
// Oops
}
finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}
创建json对象,如下所示:
JSONObject jObject = new JSONObject(result);
String aJsonString = jObject.getString("STRINGNAME");
从jObject中检索url字符串,如:
JSONObject jObject = new JSONObject(result);
String aJsonString = jObject.getString("STRINGNAME");
有关更多详细信息,请参见发布json格式,这里是json的链接