@jenya_zhilin

Как запустить функцию, которая находится в MainAcitvity внутри onBindViewHolder в адапетере?

Доброго времени суток. Есть адаптер, внутри него кончено же есть onBindViewHolder, там есть условие, при котором должна запускаться одна функцию, которая вообще по идеи находится в MainActivity)
Буду признателен за помощь, так как новичок в Java и не понимаю толком как подобное реализовать.
Вот и адаптер:
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;


import androidx.recyclerview.widget.RecyclerView;

import com.squareup.picasso.Picasso;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;

import ru.vladimirkhudyakov.escentral.Item.ActsSectionItem;
import ru.vladimirkhudyakov.escentral.R;

public class ActsSectionAdapter extends RecyclerView.Adapter<ActsSectionAdapter.ExampleViewHolder> {
    private final Context mContext;
    private int selectedPosition = -1;
    Boolean flagPosition = false;
    private int lastPosition = -1;
    private final ArrayList<ActsSectionItem> mExampleList;
    SharedPreferences sharedPreferences;

    public ActsSectionAdapter(Context context, ArrayList<ActsSectionItem> exampleList) {
        mContext = context;
        mExampleList = exampleList;
        sharedPreferences = context.getSharedPreferences("vote-acts", Context.MODE_PRIVATE);
    }

    @Override
    public @NotNull ExampleViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.list_custom_3, parent, false);
        return new ExampleViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NotNull ExampleViewHolder holder, int position) {
        @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = sharedPreferences.edit();
        if (position > lastPosition) {
            holder.linearLayout.setVisibility(View.GONE);
            new Handler().postDelayed(() -> {
                holder.linearLayout.setVisibility(View.VISIBLE);
                holder.linearLayout.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_transition_anim));
            }, 1000);
            lastPosition = position;
        }

        ActsSectionItem currentItem = mExampleList.get(position);
        String imageUrl = currentItem.getImageUrl();
        String creatorName = currentItem.getCreator();
        int placeCount = currentItem.getPlaceCount();
        int likeCount = currentItem.getLikeCount();
        holder.mTextViewCreator.setText(creatorName);
        holder.mTextViewLikes.setText(String.valueOf(likeCount));
        holder.mTextViewPlace.setText(String.valueOf(placeCount));
        holder.webView.loadData(currentItem.getSrcVideo(), "text/html", "utf-8");
        Picasso.get().load(imageUrl).fit().centerInside().into(holder.mImageView);

        if(selectedPosition == position) {
            if(flagPosition) {
                flagPosition = false;
                holder.mLinearLayoutAdditional.animate().alpha(0f);
                holder.mLinearLayoutAdditional.setVisibility(View.GONE);
                holder.itemView.setBackgroundColor(Color.parseColor("#0A0A2E"));
                holder.mTextViewPlace.setTextColor(Color.parseColor("#ffffff"));
                holder.mTextViewLikes.setTextColor(Color.parseColor("#ffffff"));
            }
            else {
                flagPosition = true;
                holder.mLinearLayoutAdditional.animate().alpha(1f);
                holder.mLinearLayoutAdditional.setVisibility(View.VISIBLE);
                holder.mTextViewLikes.setTextColor(Color.parseColor("#8383ea"));
                holder.mTextViewPlace.setTextColor(Color.parseColor("#8383ea"));
                holder.itemView.setBackgroundResource(R.drawable.view_substarte_country_list);
                holder.mVoteArtist.setText(String.valueOf(10));
                editor.putInt("id-part", currentItem.getId());
                editor.apply();
            }
        }
        else {
            holder.mLinearLayoutAdditional.animate().alpha(0f);
            holder.mLinearLayoutAdditional.setVisibility(View.GONE);
            holder.itemView.setBackgroundColor(Color.parseColor("#0A0A2E"));
            holder.mTextViewPlace.setTextColor(Color.parseColor("#ffffff"));
            holder.mTextViewLikes.setTextColor(Color.parseColor("#ffffff"));
        }

        holder.itemView.setOnClickListener(v -> {
            selectedPosition = position;
            notifyDataSetChanged();
        });
    }

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

    public static class ExampleViewHolder extends RecyclerView.ViewHolder {
        public ImageView mImageView;
        public TextView mTextViewCreator;
        public TextView mTextViewLikes;
        public TextView mTextViewPlace;
        public TextView mVoteArtist;
        public LinearLayout mLinearLayoutAdditional;
        public WebView webView;
        public LinearLayout linearLayout;

        @SuppressLint("SetJavaScriptEnabled")
        public ExampleViewHolder(View itemView) {
            super(itemView);
            linearLayout = itemView.findViewById(R.id.listLayoutActs);
            webView = itemView.findViewById(R.id.videoView);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebChromeClient(new WebChromeClient());
            mLinearLayoutAdditional = itemView.findViewById(R.id.popa);
            mImageView = itemView.findViewById(R.id.imageViewLogoCountryList3);
            mTextViewCreator = itemView.findViewById(R.id.textViewNameCountryList3);
            mTextViewLikes = itemView.findViewById(R.id.textViewPointsList3);
            mTextViewPlace = itemView.findViewById(R.id.textViewPlaceList3);
            mVoteArtist = itemView.findViewById(R.id.voteArtist);
        }
    }
}
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Power Tech Рязань
от 200 000 до 220 000 ₽
Yolla Санкт-Петербург
от 100 000 до 100 000 ₽
04 мар. 2021, в 16:10
10000 руб./за проект
04 мар. 2021, в 15:49
500 руб./в час
04 мар. 2021, в 15:42
8000 руб./за проект