如何使用asynctask为标志问答游戏

时间:2017-10-05 00:09:35

标签: android bitmap android-asynctask android-imageview

我希望在长时间搜索后找到标志测验在线数据库的图像和文本内容我发现thisthis使用asyncTask概念作为任务指南,我已设法创建下面的代码带来所有需要的问题和答案,但它没有显示相应的图像,所以根据我的代码: 1.我在哪里弄错了? 2.如何修复它以便我的代码可以工作(显示图像和文本)。   请帮我完成这项任务

     public class QuizActivity extends AppCompatActivity {
       @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    pic = (ImageView) findViewById(R.id.pic);
    quizQuestion = (TextView)findViewById(R.id.quiz_question);
    AsyncJsonObject asyncObject = new AsyncJsonObject();
    asyncObject.execute("");
         }

   private class AsyncJsonObject extends AsyncTask<String, Void, String>        {
             private ProgressDialog progressDialog;
            @Override
    protected String doInBackground(String... params) {
        HttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
        HttpPost httpPost = new HttpPost("url");
        String jsonResult = "";
        try {
            HttpResponse response = httpClient.execute(httpPost);
            jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
            System.out.println("Returned Json object " + jsonResult.toString());
        }
        catch (

                ClientProtocolException e) {
       // TODO Auto-generated catch block
            e.printStackTrace();
        }
         catch (IOException e) {
      // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return jsonResult;
    }
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        parsedObject = returnParsedJsonObject(result);
        if(parsedObject == null){
            return;
        }
        quizCount = parsedObject.size();
        firstQuestion = parsedObject.get(0);
        quizQuestion.setText(firstQuestion.getQuestion());
        String[] possibleAnswers = firstQuestion.getAnswers().plit(",");
        optionOne.setText(possibleAnswers[0]);s
        optionTwo.setText(possibleAnswers[1]);
       image= downloadBitmap(firstQuestion.getImageUrl());
        if(image!=null)
        {
            pic.setImageBitmap(image);
        }
           }
    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        try {
            while ((rLine = br.readLine()) != null) {
                answer.append(rLine);
            }
        } catch (IOException e) {

      // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return answer;
     } }
       // Get JsonObject 
    private List<QuizWrapper> returnParsedJsonObject(String result){
    List<QuizWrapper> jsonObject = new ArrayList<QuizWrapper>();
    JSONObject resultObject = null;
    JSONArray jsonArray = null;
    QuizWrapper newItemObject = null;
    try {
        resultObject = new JSONObject(result);
        System.out.println("Testing the water " + resultObject.toString());
        jsonArray = resultObject.optJSONArray("quiz");
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
    for(int i = 0; i < jsonArray.length(); i++){
        JSONObject jsonChildNode = null;
        try {
            jsonChildNode = jsonArray.getJSONObject(i);
            int id = jsonChildNode.getInt("id");
            String question = jsonChildNode.getString("question");
            String answerOptions = jsonChildNode.getString("possible_answers");
            int correctAnswer = jsonChildNode.getInt("correct_answer");
            String image_url = jsonChildNode.getString("image_url");
           newItemObject = new  QuizWrapper(image_url,id, question, answerOptions, correctAnswer);
            jsonObject.add(newItemObject);
        } catch (JSONException e) {
            e.printStackTrace();
        } }
    return jsonObject;}
// processing image url to get an Image
private Bitmap downloadBitmap(String url) {
    // initilize the default HTTP client object
    final DefaultHttpClient client = new DefaultHttpClient();
    //forming a HttoGet request
    final HttpGet getRequest = new HttpGet(url);
    try {
        HttpResponse response = client.execute(getRequest);
        //check 200 OK for success
        final int statusCode = response.getStatusLine().getStatusCode();

        if (statusCode != HttpStatus.SC_OK) {
            Log.w("ImageDownloader", "Error " + statusCode +
                    " while retrieving bitmap from " + url);
            return null;
        }
        final HttpEntity entity = response.getEntity();
        if (entity != null) {
            InputStream inputStream = null;
            try {
                // getting contents from the stream
                inputStream = entity.getContent();
                // decoding stream data back into image Bitmap that android understands
                image = BitmapFactory.decodeStream(inputStream);


            } finally {
                if (inputStream != null) {
                    inputStream.close();
                }
                entity.consumeContent();
            }
        }
    } catch (Exception e) {
        // You Could provide a more explicit error message for IOException
        getRequest.abort();
        Log.e("ImageDownloader", "Something went wrong while" +
                " retrieving bitmap from " + url + e.toString());
    }

    return image;
}

0 个答案:

没有答案