java - 如何在android/java中使用recyclerview和picasso显示图像?

标签 java android android-recyclerview picasso

我无法将从网站收集的图像显示到回收 View 中。我首先使用 jsoup 获取图像网址。然后我将 URL 添加到名为 imgURLS 的列表中。现在我想在具有回收 View 的 gridview 中显示这些图像。代码我没有错误,但当我运行我的 android 项目时,图像没有显示。它只是空白。这是我的一些代码

主要 Activity .JAVA

   @Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.AppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        new URLcollector().execute();
    imageView = findViewById(R.id.imageView);
    //setBKG = findViewById(R.id.setBKG);
    rvMain = findViewById(R.id.rvMain);

    // can add another parameter here like text
    MyAdapter adapter = new MyAdapter(imgURLS);
    rvMain.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
    rvMain.setAdapter(adapter);

}

然后仍然在mainactivity.java

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {

    // String[] companyList;
    List<String> logoList;
    ImageView currentView;
    Bitmap imgBitmaps;

    public MyAdapter( List<String> logoList) {
        // this.companyList = companyList;
        this.logoList = logoList;
    }


    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(v);
        return viewHolder;
    }

     @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        // load image from picasso and then

        Context context = holder.logo.getContext(); //<----- Add this line

        Picasso.with(context).load(imgURLS.get(position)).into(holder.logo);


    }

    @Override
    public int getItemCount() {
        return logoList.size();
    }
}

我的问题是

1)我是否正确使用了 picasso ?

2) 为什么我看不到图像(请记住 XML 中的可见性已打开)?

如果我需要提供更多代码,请告诉我。

最佳答案

@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
    // load image from picasso and then pass it to set Image
    Picasso.with(MainActivity.this)
            .load(logoList.get(position))
            .placeholder(R.mipmap.ic_launcher) // optional
            .error(R.mipmap.ic_launcher) //if error
            .into(holder.logo);
    holder.logo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "This is: " , Toast.LENGTH_SHORT).show();
        }
    });
    // holder.name.setText(companyList[position]);
}

如果您的网址正确。尝试这样的事情,不要忘记在 list 中设置 INTERNT 权限。

<uses-permission android:name="android.permission.INTERNET"/>

关于java - 如何在android/java中使用recyclerview和picasso显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50626233/

相关文章:

android - 如何在我的适配器类中编辑我的 recyclerview 图像?

java - 如何使用 RecyclerView 显示空 View ?

java - 从不同服务器 Google App Engine 读取文件

java - 我的中断代码不会破坏我的代码

java - 覆盖方法中的变量名称不正确

android - 使用带有导航组件的 FragmentContainerView?

使用 RecyclerView 进行 Android 聊天

java - 实现静态网站

java - 如何使用 f :ajax? 使 jsf 更改按下按钮后呈现的内容

java - 使用默认值覆盖 Gradle 设置