Java 从TMDB获取图像,而不是预设数据

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

感谢您在上一篇帖子中回复我的朋友()

我终于找到了如何在GridView上显示图像,下面是代码

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的链接