Как я могу получить доступ к внешним видам из адаптера

Если вы хотите знать размер без декодирования, я считаю, что следующие работы:

$size = (int) (strlen(rtrim($data, '=')) * 3 / 4);

Или:

$size = (strlen($data) * 3 / 4) - substr_count(substr($data, -2), '=');

В противном случае просто используйте strlen() на декодированные данные, как указано в Marc.

1
задан Ibra 18 January 2019 в 10:05
поделиться

2 ответа

Вам необходим интерфейс , передаваемый в качестве параметра при создании адаптера .

Пример:

class Adapter(private val actions: Actions) : RecyclerView.Adapter<ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        // Create ViewHolder
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        // Setup Binder

        holder.readMoreButton.setOnClickListener(View.OnClickListener {
             if (userIsSubscribed) {
                 actions.launchActivity() //Launch the next Activity
             } else {
                 //Show the subscribe layout
                 holder.rlSubscribeToView.setVisibility(View.VISIBLE)

                 actions.hideRecylerView() //Then hide the entire recyclerView
             }
         })
     }
}

internal interface Actions {
    fun launchActivity()
    fun hideRecylerView()
}
0
ответ дан Bam 18 January 2019 в 10:05
поделиться

Из небольшого исследования можно получить 2 обратных вызова, которые могут дать вам ссылку на реальный RecyclerView, методы onAttachedToRecyclerView и onDetachedFromRecycler . Я предполагаю, что вы вызываете конструктор адаптера и передаете в контексте. Если это так, используйте приведенный ниже код, он даст желаемый результат.

RelativeLayout rlSubscribeToView;
RecyclerView recyclerView;

public RecyclerAdapter(Context context) {
    this.context = context;
    this.videoItems = videoItems;

    rlSubscribeToView = ((Activity) context).findViewById(R.id.rlSubscribeToView);
}

 @Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    this.recyclerView = recyclerView;
}

и в вашем onBindViewHolder вы теперь можете получить доступ к макету подписки

public void onBindViewHolder(@NonNull final ReadViewholder, final int  position) {
 ...
   rlSubscribeToView.setVisibility();
}
0
ответ дан Bryan Ibrahim 18 January 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: