小さな画像で ImageViews のリストを作成し、それらをクリックして大きく表示しようとしています。AsyncTask でパーサーを使用して、サイトからダウンロードします。
最初のステップ (「doInBackground」) では、パーサーが小さな画像から URL を読み取り、それらを に配置します ArrayList<HashMap<String, String>>
。キー「imgUrlSmall」を使用
次に、大きな画像から URL を読み取り、同じ ArrayList に配置します。キー「imgUrlBig」を使用
「onPostExecute」では、ImageViews を作成し、画像を設定しますimageViewArray[i].setImageDrawable(grabImageFromUrl(text));
次に、ClickListener を設定します。画像をクリックすると、新しいアクティビティが開始され、そこに大きな画像の URL が配置されます。
ここで、すべての画像 (大きい画像と小さい画像) をプログラムで表示します。キー「imgUrlSmall」を持つ値のみを imageViewArray に配置する方法。そして正しい値でputExtra?
多分いくつかの検証ですmap.containsKey?
2番目の部分では、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++;
}
}