【问题标题】:How to display same image in ImageView if I click on the horizontal images in android如果我单击android中的水平图像,如何在ImageView中显示相同的图像
【发布时间】:2016-05-02 09:19:04
【问题描述】:

我有水平线性布局中的图像列表如果我单击特定图像,相同的图像将出现在单个图像视图的上方。 如何获取图像在图像视图中的位置。

代码

JSONArray multipleimage = alertObj.getJSONArray(PRODUCT_IMAGES);

/*JSONObject singleimage = multipleimage.getJSONObject(Integer.parseInt("original_res"));
String singleimg = productpath + alertObj.getString("seller_id") + String.valueOf(singleimage);
firstimages=(ImageView)

findViewById(R.id.singleimage);

YelloPage.imageLoader.displayImage(singleimg,firstimages,options);*/

horizontalimage=(LinearLayout) findViewById(R.id.linearimage);

if(multipleimage.length()>0)

{
    for (int j = 0; j < multipleimage.length(); j++) {
        JSONObject pimages = multipleimage.getJSONObject(j);
        JSONObject oneimage = multipleimage.getJSONObject(0);
        ii = new ImageView(singleshooppingcart.this);
        multipleimages = (ImageView) findViewById(R.id.singleimage);
        ii.setScaleType(ImageView.ScaleType.FIT_CENTER);
        LinearLayout.LayoutParams image = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        image.width = 150;
        image.height = 150;
        image.setMargins(5, 0, 0, 0);
        String multimgs = pimages.getString("original_res");
        String oneimg = oneimage.getString("original_res");
        String[] img2 = multimgs.split("\\.");
        String imagone = productpath + alertObj.getString("seller_id") + '/' + img2[0] + '(' + '2' + '0' + '0' + ')' + '.' + img2[1];
        String singleiamges = productpath + alertObj.getString("seller_id") + '/' + oneimg;
        YelloPage.imageLoader.displayImage(imagone, ii, options);
        YelloPage.imageLoader.displayImage(singleiamges, multipleimages, options);
        ii.setLayoutParams(image);
        horizontalimage.addView(ii);
        ii.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


            }
        });
    }
}

如何解决这个问题在此先感谢。

【问题讨论】:

    标签: android android-layout android-studio android-imageview


    【解决方案1】:

    您可以为此使用多种方法-

    1. 最简单的方法是使用ViewGroup#indexOfChild(View child) 方法。这只会返回你想要的。

    2. 或者你可以使用View#setTag(Object)View#getTag(),特别是如果你想在onClick中获得不仅仅是索引的东西。

    3. 如果您想为每个视图设置多个标签,也可以使用View#setTag(int, Object)View#getTag(int)

    希望下面第一种方法的示例代码有所帮助-

    ii.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick (View view){
        // the parameter view here is your imageview, which is clicked.
        // horizontalimage is your LinearLayout, which is a ViewGroup
        int indexOfImage = horizontalimage.indexOfChild(view);
        // do what you want to do with index
        }
    });
    

    【讨论】:

    • @Nivethitha 添加了一些示例代码。希望这会有所帮助。
    • 我写了如下代码 int indexOfImage = Horizo​​ntalimage.indexOfChild(view);字符串 img1=String.valueOf(indexOfImage); YelloPage.imageLoader.displayImage(img1, multipleimages, options);但我有错误
    • 您必须正确获取 indexOfImage。之后,您需要获取该索引的图像 URL,但您刚刚使用了 String.valueOf(int),例如,它只会将 1 转换为“1”。
    • 我得到了正确的 indexofImage,但是如何使用这个位置在另一个 imageview 中显示相同的图像
    • 谢谢,我得到了关于图片网址索引位置的答案
    【解决方案2】:

    未测试..尝试这样...

    JSONArray multipleimage = alertObj.getJSONArray(PRODUCT_IMAGES);
    
    /*JSONObject singleimage = multipleimage.getJSONObject(Integer.parseInt("original_res"));
    String singleimg = productpath + alertObj.getString("seller_id") + String.valueOf(singleimage);
    firstimages = (ImageView)findViewById(R.id.singleimage);
    
    YelloPage.imageLoader.displayImage(singleimg,firstimages,options);*/
    horizontalimage = (LinearLayout)findViewById(R.id.linearimage);
    
    if(multipleimage.length()>0)
    {
        for (int j = 0; j < multipleimage.length(); j++) {
            JSONObject pimages = multipleimage.getJSONObject(j);
            JSONObject oneimage = multipleimage.getJSONObject(0);
            ii = new ImageView(singleshooppingcart.this);
            multipleimages = (ImageView) findViewById(R.id.singleimage);            
            ii.setScaleType(ImageView.ScaleType.FIT_CENTER);
            LinearLayout.LayoutParams image = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            image.width = 150;
            image.height = 150;
            image.setMargins(5, 0, 0, 0);
            String multimgs = pimages.getString("original_res");
            String oneimg = oneimage.getString("original_res");
            String[] img2 = multimgs.split("\\.");
            String imagone = productpath + alertObj.getString("seller_id") + '/' + img2[0] + '(' + '2' + '0' + '0' + ')' + '.' + img2[1];
            String singleiamges = productpath + alertObj.getString("seller_id") + '/' + oneimg;
            YelloPage.imageLoader.displayImage(imagone, ii, options);
            YelloPage.imageLoader.displayImage(singleiamges, multipleimages, options);
            ii.setLayoutParams(image);
            horizontalimage.addView(ii);
            ii.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                  multipleimages.setImageURI (singleiamges);    
                }
            });
        }
    }
    

    【讨论】:

    • serverimage的位置是整数还是字符串
    • 如何设置图像视图(multipleimages=(ImageView)findViewById(R.id.singleimage);)
    • @Nivethitha..你想说什么..不明白!
    • @Nivethitha..你必须像 positionOfServerImage = (int) (multipleimages.getTag());
    • @gupta 我的意思是,如果我单击 imageview 中的图像,相同的图像将出现在另一个 imageview 上
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2015-02-01
    相关资源
    最近更新 更多