首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何知道从recyclerview中选择的任何镜像?

我如何知道从recyclerview中选择的任何镜像?
EN

Stack Overflow用户
提问于 2016-09-16 01:19:07
回答 2查看 39关注 0票数 0

你好,我有这个json data a link

我将jsonArray解析为

这是一段json,

代码语言:javascript
运行
复制
"im:image":[  
           {  
              "label":"http://is1.mzstatic.com/image/thumb/Purple20/v4/87/35/82/87358231-ce91-3d14-b306-95888c23db3c/mzl.gdgtivnk.png/53x53bb-85.png",
              "attributes":{  
                 "height":"53"
              }
           },
           {  
              "label":"http://is5.mzstatic.com/image/thumb/Purple20/v4/87/35/82/87358231-ce91-3d14-b306-95888c23db3c/mzl.gdgtivnk.png/75x75bb-85.png",
              "attributes":{  
                 "height":"75"
              }
           },
           {  
              "label":"http://is3.mzstatic.com/image/thumb/Purple20/v4/87/35/82/87358231-ce91-3d14-b306-95888c23db3c/mzl.gdgtivnk.png/100x100bb-85.png",
              "attributes":{  
                 "height":"100"
              }
           }

我像这张照片一样解析它

但是当我点击这里的任何一张图片时,我只得到了这张图片!

我如何解决这个问题?当我点击"snapchat“时,我得到了snap的图像??

这是解析json的方法。

代码语言:javascript
运行
复制
 public void JsonAppShowData() {
    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( jsonUrl, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {  try {
            JSONArray jsonArray = response.getJSONObject(feedKey).getJSONArray(entryKey);
            AppShowModule appShowModule = new AppShowModule();
            int x = appShowModule.getId();
            for (int i = 0; i<jsonArray.length();i++)
            {
                JSONArray imageArray = response.getJSONObject(feedKey).getJSONArray(entryKey).getJSONObject(i).getJSONArray(imageKey);
                for (int j = 0; j < imageArray.length(); j++) {
                    String image = imageArray.getJSONObject(j).getString(labelKey).toString();
                    imageUrls.add(image);
                    appShowModule.setAllimage(imageUrls);
                    appShowModules.add(appShowModule);
                }}
                imageRecyclerViewadapter = new ImageListAdapter(appShowModules, getContext(), imageUrls);
                AppRecyclerView.setAdapter(imageRecyclerViewadapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }}
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e( "LOG", error.toString() );
        }
    } );

这是图像列表加载器

代码语言:javascript
运行
复制
public class ImageListAdapter extends RecyclerView.Adapter<ImageListAdapter.ViewHolder> {
    List<AppShowModule> appShowModules;
    List<String> imageUrl;
    AppShowModule appShowModule;
    String x;
    Context context;
    public ImageListAdapter(List<AppShowModule> appShowModules, Context context ,List<String>imageUrls
    ){
        super();
        this.imageUrl =imageUrls;
        this.appShowModules = appShowModules;
        this.context = context;}
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from( parent.getContext() ).inflate( R.layout.imagelayout, parent,false );
        ViewHolder viewHolder = new ViewHolder( v );
        return viewHolder;}
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        AppShowModule appShowModule = appShowModules.get(position);
         x = appShowModule.getAllimage().get(position);
        Picasso.with(context).load(x).into(holder.appImage);
    }
    public int getItemCount() {
        return imageUrl.size();
    }
    class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView appImage;
        public ViewHolder(View itemView) {
            super(itemView);
            appImage = (ImageView) itemView.findViewById(R.id.appImage);
            appImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent= new Intent(context, ImageShow.class);
                    intent.putExtra("image", x);
                    context.startActivity(intent);
                }});
        }

        }
}

这是单击时将显示的活动

代码语言:javascript
运行
复制
appImage=(ImageView)findViewById(R.id.appImage);
    Picasso.with(context).load(x).into(appImage);
EN

回答 2

Stack Overflow用户

发布于 2016-09-16 01:32:59

您不能在ViewHolder中直接使用变量'x‘,因为它不会包含所单击项目的图像链接。

要获得正确的链接,必须使用getAdapterPosition().如果单击响应取决于单击的项的位置,则只需从ViewHolder中调用getAdapterPosition()即可。现在我已经展示了如何在ViewHolder中使用它。

代码语言:javascript
运行
复制
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnItemClickListener {
public MyViewHolder(View view) {
  super(view);

  view.setOnClickListener(this);
}

@Override
public void OnClick(View view) {
  // Get the item clicked
  // For this example, I'm assuming your data source is of type `List<MyObject>`
  MyObject myObject = mDataSource.get(getAdapterPosition());
  // Then you can do any actions on it, for example - 
  myObject.setChecked();
   }
}
票数 0
EN

Stack Overflow用户

发布于 2016-09-16 03:58:56

您可以在适配器中为单击的项目定义回调

代码语言:javascript
运行
复制
public interface OnItemClickListener {
    void onItemClicked(YourItem item);
}

在适配器中为调用片段或活动公开一个方法,以设置侦听器

代码语言:javascript
运行
复制
 public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
    this.onItemClickListener = onItemClickListener;
}

在绑定您的yourviewholder时,您可以将事件报告回片段或活动,并执行业务逻辑

代码语言:javascript
运行
复制
 @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { 
        //your binding code
        if (onItemClickListener != null) {
          onItemClickListener.onItemClicked(item);
        }
    }

在你的片段或活动中

代码语言:javascript
运行
复制
adapter.setOnItemClickListener(new YourAdapter.OnItemClickListener() {
            @Override
            public void onItemClicked(YourItem item) {
                //Business logic goes here
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39516874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档