从Viewholder中的原始资源设置墙纸

时间:2018-11-08 15:36:43

标签: java android android-recyclerview android-resources

我创建了一个recyclerview来显示卡片视图。它们包含我已设置到Raw目录中的GIF。效果很好。

现在 我正在尝试根据所选的itemview设置手机的墙纸。 这里的问题是,我正在使用的WallpaperManager试图询问资源路径,但是我希望根据所选的itemview进行设置。这是片段-

 public MyViewHolder(final View itemView) {
            super(itemView);
            this.textViewName =  itemView.findViewById(R.id.textViewName);
            this.textViewVersion =  itemView.findViewById(R.id.textViewVersion);
            this.gifView = itemView.findViewById(R.id.gifView);
            this.fileName = itemView.findViewById(R.id.fileName);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(itemView.getContext(), "You Chose " + textViewName.getText().toString(), Toast.LENGTH_SHORT).show();

                    int resID = itemView.getResources().getIdentifier(fileName.getText().toString(),
                            "raw", itemView.getContext().getPackageName());
                    Log.i(TAG, String.valueOf(resID));

                    WallpaperManager myWallpaperManager = WallpaperManager.getInstance(itemView.getContext());
                    try {
                        myWallpaperManager.setResource(resID);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

        }

您将看到我尝试根据我在视图中设置的(不可见)文本视图设置resID。只是尝试一下,但它仍然为我提供了错误-

android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0
    at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:255)
    at android.content.res.Resources.getResourceName(Resources.java:1954)
    at android.app.WallpaperManager.setResource(WallpaperManager.java:1155)
    at android.app.WallpaperManager.setResource(WallpaperManager.java:1125)
    at com.example.erickrusznis.live.CustomAdapter$MyViewHolder$1.onClick(CustomAdapter.java:54)

因此,它似乎一直在不断给我资源的ID,而不是实际路径。 关于如何根据位置获取文件原始路径的任何建议都将非常有用!谢谢!

编辑- 我也尝试过此操作,但是它说它需要一个'int'而不是uri-

  Uri uri = Uri.parse("android.resource://"+itemView.getContext().getPackageName()+"/raw/"+fileName.getText().toString());

                    WallpaperManager wpm = WallpaperManager.getInstance(itemView.getContext());
                    wpm.setResource(uri);

0 个答案:

没有答案