Below I present the AsyncTask , which is in the adapter. In doInBackground() , the parsing is performed using Jsoup, then the text in TextView is set to onPostExecute() .
private class Content2 extends AsyncTask<String, Void, Boolean> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Boolean doInBackground(String... params) { Document htmlTags = null; try { String htmlUrl = "http://www.cinemaplus.az/ru"; htmlTags = Jsoup.connect(htmlUrl).get(); } catch (Exception e) { e.printStackTrace(); } Elements moviesContainer = htmlTags.getElementsByAttributeValueContaining("class", "sortable_movie_home"); for (Element movieContainer : moviesContainer) { moviesNames.add(movieContainer.select("h2").text()); moviesUrls.add("http://www.cinemaplus.az" + movieContainer.getElementsByAttributeValueContaining("src", "site/assets").attr("src")); } return true; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); mItemText.setText(moviesNames.get(positionNext)); Picasso.get().load(moviesUrls.get(positionNext)).into(mItemImage); } } The adapter in which the AsyncTask is located:
public class PopularAdapter extends RecyclerView.Adapter { private ArrayList<String> moviesNames = new ArrayList<>(); private ArrayList<String> moviesUrls = new ArrayList<>(); private TextView mItemText; private ImageView mItemImage; private int positionNext; private Content2 content; @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item, parent, false); return new ListViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((ListViewHolder) holder).bindView(position); } @Override public int getItemCount() { return moviesNames.size(); } private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ public ListViewHolder(View itemView){ super (itemView); mItemText = (TextView) itemView.findViewById(R.id.textView); mItemImage = (ImageView) itemView.findViewById(R.id.card_background); itemView.setOnClickListener(this); } public void bindView(int position) { content = new Content2(); content.execute(); positionNext = position; } public void onClick(View view){ } } In theory, the data should be displayed as cards in RecyclerView, but in fact only the first element is displayed.
How can I display all items? Is there another way?