Android 仅将HashMap中的值与右键一起使用

Android 仅将HashMap中的值与右键一起使用,android,arraylist,android-asynctask,hashmap,Android,Arraylist,Android Asynctask,Hashmap,我正在尝试创建一个包含小图片的ImageView列表,并通过单击它们来显示大图片。我在AsyncTask中使用解析器从站点下载 在第一步(“doInBackground”)中,解析器从小图像中读取URL,并将它们放入ArrayList。我使用“imgUrlSmall”键 然后从大图像中读取URL并将其放入同一ArrayList。使用“imgUrlBig”键 在“onPostExecute”中,它创建ImageView并设置图像imageViewArray[i].setImageDrawable(

我正在尝试创建一个包含小图片的ImageView列表,并通过单击它们来显示大图片。我在AsyncTask中使用解析器从站点下载

在第一步(“doInBackground”)中,解析器从小图像中读取URL,并将它们放入
ArrayList
。我使用“imgUrlSmall”键

然后从大图像中读取URL并将其放入同一ArrayList。使用“imgUrlBig”键

在“onPostExecute”中,它创建ImageView并设置图像
imageViewArray[i].setImageDrawable(grabImageFromUrl(text))

然后它设置ClickListener,在单击图像时启动新的活动,并将big image的url放在那里

现在程序显示所有图像(大小)。如何仅将键为“imgUrlSmall”的值放入imageViewArray。还有有正确的价值吗

也许是一些验证,比如if
map.containsKey?

对于第二部分,要使putExtra可用键“imgUrlBig”将所有值放入standart
ArrayList
,然后单击image use
v.getId()

对不起,我的英语不好

以下是所有代码:

背景

 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;

     }
受保护的ArrayList doInBackground(字符串…参数){
ArrayList imgItems=新的ArrayList();
/*--第一个解析器--*/
HtmlCleaner HtmlCleaner=新的HtmlCleaner();
URL=新URL(博客URL);
TagNode root=htmlCleaner.clean(url);
Object[]statsNode3=root.evaluateXPath(XPATH\u STATS3);
用于(对象标记:statsNode3){
TagNode aTag=(TagNode)标记;
String href=aTag.getAttributeByName(“src”).trim();
//创建新的HashMap
HashMap=newHashMap();
//将每个子节点添加到HashMap key=>value
map.put(“imgUrlSmall”,href);
//将哈希列表添加到ArrayList
imgItems.add(map);
}
/*--第二个解析器--*/
HtmlCleaner htmlCleaner2=新HtmlCleaner();
URL url2=新URL(博客URL);
TagNode root2=htmlCleaner2.clean(url2);
对象[]statsNode\u Full\u Image=root2.evaluateXPath(XPATH\u STATS4);
用于(对象标记:statsNode\u Full\u图像){
TagNode aTag=(TagNode)标记;
String href=aTag.getAttributeByName(“href”).trim();
//创建新的HashMap
HashMap=newHashMap();
//将每个子节点添加到HashMap key=>value
map.put(“imgUrlBig”,href);
//将哈希列表添加到ArrayList
imgItems.add(map);
}
返回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++;
                }
受保护的void onPostExecute(ArrayList imgItems){
字符串文本=”;
int i=0;
ImageView[]imageViewArray=新的ImageView[imgItems.size()];
for(HashMap映射:imgItems)
对于(条目mapEntry:map.entrySet())
{
text=mapEntry.getValue();
//创建图像视图
imageViewArray[i]=新的ImageView(Test4.this);
RelativeLayout.LayoutParams参数=新的RelativeLayout.LayoutParams(50,50);
imageViewArray[i].setImageDrawable(grabImageFromUrl(文本));
imageViewArray[i].setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图v){
System.out.println(v.getId());
Intent Intent=newintent(v.getContext(),Full_Image_Activity.class);
intent.putExtra(“imgUrlBig”,url);//这里我不知道如何放置url
startActivityForResult(意向,0);
}
});
//让我们获取根布局并添加ImageView
RelativeLayout布局=(RelativeLayout)findViewById(R.id.moreImages);
layout.addView(imageViewArray[i],参数);
i++;
}

}

您应该创建一个包含两个URL的类,然后可以使用
ArrayList

类应该是这样的

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