1

小さな画像で 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++;
                }

}

4

1 に答える 1

0

両方の URL を持つクラスを作成する必要があります。その後、次ArrayList<HashMap<String, YourImageClass>>
のようなクラスを使用できます。

public class YourImageClass{
public String smallImageUrl;
public String bigImageUrl;
public String someNameOfImageMaybe;
etc.
}
于 2013-04-26T13:19:39.320 に答える