我有一些与我的android开发项目相关的查询

问题描述 投票:0回答:1

点是当我点击回收商视图列表的项目时

从卡片视图持有者中,项目的标题和照片被提取到相对布局

现在我想将 pdf url 与已在相对布局中获取的项目照片链接起来

所以..当我点击该图像时,pdf应该打开(单独针对所有项目)

我尝试应用打开pdf的接口

java android
1个回答
0
投票

您必须将 pdf url 链接到找到相关 ImageView 的 ArrayList(或数组)的位置。你可以看下面的代码:

public class Adapter extends RecyclerView.Adapter<Adapter.Holder> {

   private final Context;

   private final ArrayList<String> pdfNames; // PDF names within the app
   private final ArrayList<Integer> identities;
   private final ArrayList<String> existingPDFNames; // Expected PDF names.
   private final ArrayList<String> pdfUrls;

   public Adapter(Context context, ArrayList<String> pdfNames, ArrayList<Integer> identities, ArrayList<String> existingPDFNames, ArrayList<String> pdfUrls) {
      this.context = context;
      this.pdfNames= pdfNames;
      this.identities = identities;
      this.existingPDFNames = existingPDFNames;
      this.pdfUrls = pdfUrls;
   }

       @Override
       public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
          final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_user_chat_adapter_layout, parent, false);
          return new Holder(view);
   }

   @Override
   public void onBindViewHolder(Holder holder, int position) {
      final TextView pdfNameTextView= holder.pdfNameTextView;
      final ImageView imageView = holder.imageView;
      
      pdfNameTextView.setText(pdfNames.get(position));
      imageView.setImageResource(identities.get(position));

      // Here we handle linking PDF urls
    
      imageView.setOnClickListener(view -> {
          if (existingPDFNames.get(position).equals(pdfNames.get(position))) {
            final pdfUrl = pdfUrls.get(position);
            // Write a code that opens the pdf here
         }
      });
   }

   @Override
   public int getItemCount() {
      return pdfNames.size();
   // or return identities.size(); 
   }

   static final class Holder extends RecyclerView.ViewHolder {
      private final TextView pdfNameTextView;
      private final ImageView imageView;
      
      public Holder(View view) {
         super(view);
         pdfNameTextView = view.findViewById(R.id.pdfNameTextView);
         imageView = view.findViewById(R.id.imageView);
      }
   }
}

我希望它有帮助,但不要忘记处理“existingPDFNames”和“pdfUrls”数组列表。这是一个示例(请注意添加项目的位置。):

pdfNames.add(0, "hello_world.pdf");
pdfNames.add(1, "hello_universe.pdf");

pdfUrls.add(0, "https://example.com/hello_world.pdf");
pdfUrls.add(1, "https://example.com/hello_universe.pdf");
© www.soinside.com 2019 - 2024. All rights reserved.