Android 仅将HashMap中的值与右键一起使用
我正在尝试创建一个包含小图片的ImageView列表,并通过单击它们来显示大图片。我在AsyncTask中使用解析器从站点下载 在第一步(“doInBackground”)中,解析器从小图像中读取URL,并将它们放入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(
ArrayList
。我使用“imgUrlSmall”键
然后从大图像中读取URL并将其放入同一ArrayList。使用“imgUrlBig”键
在“onPostExecute”中,它创建ImageView并设置图像imageViewArray[i].setImageDrawable(grabImageFromUrl(text))代码>
然后它设置ClickListener,在单击图像时启动新的活动,并将big image的url放在那里
现在程序显示所有图像(大小)。如何仅将键为“imgUrlSmall”的值放入imageViewArray。还有有正确的价值吗
也许是一些验证,比如ifmap.containsKey?
对于第二部分,要使putExtra可用键“imgUrlBig”将所有值放入standartArrayList
,然后单击image usev.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.
}