2013-04-26 70 views
1

我試圖創建一個帶有小圖像的ImageView列表,並通過點擊來顯示大圖。我在AsyncTask中使用解析器從站點下載。只有右鍵使用HashMap中的值

第一步(「doInBackground」)解析器從小圖像讀取URL並將它們放到ArrayList<HashMap<String, String>>。我使用密鑰「imgUrlSmall」

然後從大圖像讀取URL並放入相同的ArrayList。使用鍵「imgUrlBig」

在「onPostExecute」它創造了ImageViews並設置圖像imageViewArray[i].setImageDrawable(grabImageFromUrl(text));

然後將其設置在ClickListener,在通過點擊圖片就開始新的活動,並把那裏的大圖像的URL。

現在程序顯示所有圖像(大和小)。如何將imageViewArray放入只有值爲「imgUrlSmall」的值。並把正確的價值放在?

也許是一些驗證,就像如果map.containsKey?

對於第二部分,以使putExtra也許把所有的值與關鍵「imgUrlBig」以非標準ArrayList<String>,然後通過點擊圖像使用v.getId()

對不起,我的英語

這裏的所有代碼:

doInBackground

protected ArrayList<HashMap<String, String>> doInBackground(String... params) { 
      ArrayList<HashMap<String, String>> imgItems = new ArrayList<HashMap<String, String>>(); 
       /* --First Parser-- */ 
       HtmlCleaner htmlCleaner = new HtmlCleaner(); 
       URL url = new URL(BLOG_URL); 
       TagNode root = htmlCleaner.clean(url); 
       Object[] statsNode3 = root.evaluateXPath(XPATH_STATS3); 

       for (Object tag : statsNode3){ 
         TagNode aTag = (TagNode) tag; 
         String href = aTag.getAttributeByName("src").trim(); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put("imgUrlSmall", href); 

         // adding HashList to ArrayList 
         imgItems.add(map); 
       } 
       /* --Second Parser-- */ 
       HtmlCleaner htmlCleaner2 = new HtmlCleaner(); 
       URL url2 = new URL(BLOG_URL); 
       TagNode root2 = htmlCleaner2.clean(url2); 

       Object[] statsNode_Full_Image = root2.evaluateXPath(XPATH_STATS4); 
       for (Object tag : statsNode_Full_Image){ 
         TagNode aTag = (TagNode) tag; 
         String href = aTag.getAttributeByName("href").trim(); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put("imgUrlBig", href); 

         // adding HashList to ArrayList 
         imgItems.add(map); 
         } 

     return imgItems; 

    } 

onPostExecute

protected void onPostExecute(ArrayList<HashMap<String, String>> imgItems) { 
String text=""; 
int i=0;  
ImageView[] imageViewArray = new ImageView[imgItems.size()]; 
    for (HashMap<String, String> map : imgItems) 
     for (Entry<String, String> mapEntry : map.entrySet()) 
      { 
       text = mapEntry.getValue(); 
       // create ImageView 
       imageViewArray[i] = new ImageView(Test4.this); 
       RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50,50); 
       imageViewArray[i].setImageDrawable(grabImageFromUrl(text)); 
       imageViewArray[i].setOnClickListener(new OnClickListener() 
        { 
         @Override 
         public void onClick(View v) { 
          System.out.println(v.getId()); 
          Intent intent = new Intent(v.getContext(), Full_Image_Activity.class); 
          intent.putExtra("imgUrlBig", url); //Here i don`t know how to put the url 
          startActivityForResult(intent, 0); 

         } 
        }); 

       // Let's get the root layout and add our ImageView 
       RelativeLayout layout = (RelativeLayout) findViewById(R.id.moreImages); 
       layout.addView(imageViewArray[i], params); 
       i++; 
       } 

}

回答

0

你應該CRE吃了兩個網站的類,然後你可以使用ArrayList<HashMap<String, YourImageClass>>
類應該是這樣的

public class YourImageClass{ 
public String smallImageUrl; 
public String bigImageUrl; 
public String someNameOfImageMaybe; 
etc. 
}