2014-01-05 2 views
0

Android 개발에 익숙하지 않고 간단한 어댑터가 들어있는 ListView 인 Android 활동 클래스가 있습니다. 액티비티에는 제목과 이미지가있는 제품 목록이 표시됩니다.원격 이미지를 사용하여 ListView 채우기

각 항목의 제목을 가져 와서 표시했지만 추가 클래스없이 이미지를 표시하려면 어떻게해야합니까 (맞춤형 어댑터 클래스를 사용하고 싶지는 않습니다).

이 내 활동 클래스입니다 :

public class BookletsActivity extends Activity { 

    private ProgressDialog pDialog; 

    // URL to get JSON 
    private static String url = "url.json"; 

    // JSON Node names 
    private static final String TAG_NAME = "shop_name"; 
    private static final String TAG_ADDRESS_STRING = "shop_address"; 
    private static final String TAG_URL = "shop_url"; 
    private static final String TAG_BOOKLET_URL = "feuilletez"; 
    private static final String TAG_ID = "id"; 
    TextView shop_address; 
    TextView shop_name; 
    TextView shop_url; 
    ImageButton feuilletez; 
    private ListView list; 

    private ImageButton button1; 
    private ImageButton button2; 
    private ImageButton button3; 
    private ImageButton button4; 

    // contacts JSONArray 
    JSONArray contacts = null; 

    // Hashmap for ListView 
    ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    // Portrait only 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

     //Remove title bar 
       this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

     //Remove notification bar 
       this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_booklet_list); 


     // Calling async task to get json 
     new GetJson().execute(); 
    } 

    /** 
    * Async task class to get json by making HTTP call 
    * */ 
    private class GetJson extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 


      // Showing progress dialog 
      pDialog = new ProgressDialog(BookletsActivity.this); 
      pDialog.setMessage("Mise à jour..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 

     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      // Creating service handler class instance 
      ServiceHandler sh = new ServiceHandler(); 

      // Making a request to url and getting response 
      String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET); 

      Log.d("Response: ", "> " + jsonStr); 

      JSONArray array = null; 
      try { 
       array = new JSONArray(jsonStr); 
      } catch (JSONException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      try { 
       ArrayList<String> mythumbs = new ArrayList<String>(); 
       ArrayList<String> myurls = new ArrayList<String>(); 
       for (int i = 0; i <array.length(); i++){ 
       JSONObject jsonObject = array.getJSONObject(i); 
       String id = jsonObject.getString("id"); 
       System.out.println("id --->" + id); 
       String url = jsonObject.getString("url"); 
       System.out.println("url --->" + url); 
       String created_at = jsonObject.getString("created_at"); 
       System.out.println("created_at --->" + created_at); 
       String updated_at = jsonObject.getString("updated_at"); 
       System.out.println("updated_at --->" + updated_at); 
       String title = jsonObject.getString("title"); 
       System.out.println("title --->" + title); 
       String thumbnail_url = jsonObject.getString("thumbnail_url"); 
       System.out.println("thumbnail_url --->" + thumbnail_url); 
       mythumbs.add(thumbnail_url); 
       String document_url = jsonObject.getString("document_url"); 
       System.out.println("document_url --->" + document_url); 
       myurls.add(document_url); 
       String presented = jsonObject.getString("presented"); 
       System.out.println("presented --->" + presented); 

       System.out.println("mythumbs --->" + mythumbs); 
       System.out.println("myurls --->" + myurls); 

       HashMap<String, String> map = new HashMap<String, String>(); 
       if(title == "null"){ 
        map.put(TAG_NAME, "Notre catalogue"); 
       } 
       else { 
       map.put(TAG_NAME, title); 
       } 
       map.put(TAG_ADDRESS_STRING, thumbnail_url ); 
       map.put(TAG_URL, url); 
       map.put(TAG_ID, id); 
       map.put(TAG_BOOKLET_URL, document_url); 
       oslist.add(map); 
         } 


       } catch (JSONException e) { 
        e.printStackTrace(); 

      } 
      return null; 
    } 

     private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
      ImageView bmImage; 

      public DownloadImageTask(ImageView bmImage) { 
       this.bmImage = bmImage; 
      } 

      protected Bitmap doInBackground(String... urls) { 
       String urldisplay = urls[0]; 
       Bitmap myImage = null; 
       try { 
       InputStream in = new java.net.URL(urldisplay).openStream(); 
       myImage = BitmapFactory.decodeStream(in); 
       } catch (Exception e) { 
        Log.e("Error", e.getMessage()); 
        e.printStackTrace(); 
       } 
       myImage = Bitmap.createScaledBitmap(myImage, 300, 200, false);; 
       return myImage; 


      } 

      protected void onPostExecute(Bitmap result) { 
       bmImage.setImageBitmap(result); 
      } 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
       list = (ListView) findViewById(R.id.list); 
       ListAdapter adapter = new SimpleAdapter(BookletsActivity.this, oslist, 
         R.layout.listvie_booklet_row, new String[] { TAG_NAME, 
           TAG_ADDRESS_STRING, TAG_BOOKLET_URL, TAG_ID }, new int[] { R.id.name_shop, 
           R.id.address_shop}); 

       list.setAdapter(adapter); 
       list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
         Intent intent = new Intent(BookletsActivity.this, PdfReader.class); 
        // Toast.makeText(ShopsActivity.this, "You Clicked at "+oslist.get(+position).get("shop_url"), Toast.LENGTH_SHORT).show(); 
         intent.putExtra("pdfurl",oslist.get(+position).get("feuilletez")); 
         intent.putExtra("pdfname",oslist.get(+position).get("id")); 
         overridePendingTransition(R.anim.animationin, R.anim.animationout); 
         startActivity(intent); 


        } 
       }); 

      // Dismiss the progress dialog 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 



     } 

    } 

} 

답변

0

당신은 행에서만 제목을 보여 ArrayAdapter를 사용할 수 있지만 다음 사용자 지정 행을 만들려면 u는 사용자 정의 어댑터를 작성하려면해야합니다.

From android developer :

ArrayAdapter와 사용 데이터 소스가 배열이 어댑터. 기본적으로 ArrayAdapter는 각 항목에 toString()을 호출하고 내용을 TextView에 배치하여 각 배열 항목에 대한보기를 만듭니다.

각 항목의 모양을 사용자 정의하려면 배열에있는 객체의 toString() 메소드를 무시할 수 있습니다. 또는 TextView가 아닌 ​​각 항목에 대해 보기를 만들려면 (예 : 각 배열 항목에 대해 ImageView를 사용하려는 경우) ArrayAdapter 클래스를 확장하고 getView()를 재정 의하여 원하는보기 유형을 반환합니다. 각 항목에 대해

+0

괜찮습니다. 도움을 요청하십시오. – Xavier