[英]Intents inside a Recycler View?
任何人都可以幫助我! 無法正常編寫意圖,以便在我的回收站視圖中啟動新活動! 有必要這樣做的新方法嗎? 任何幫助將非常感謝!
這是我的View Holder Code;
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title;
ImageView icon;
public MyViewHolder(View itemView, TextView textView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.listText);
icon = (ImageView) itemView.findViewById(R.id.listImage);
itemView.setOnClickListener(this);
title = textView;
}
@Override
public void onClick(View v) {
if (getPosition() == 0) {
Toast.makeText(v.getContext(), "Actvity 1", Toast.LENGTH_SHORT).show();
}
if (getPosition() == 1) {
Toast.makeText(v.getContext(), "Actvity 2", Toast.LENGTH_SHORT).show();
}
}
}
}
在viewHolder中初始單擊偵聽器。
/**
* see {@link <a href="https://youtu.be/imsr8NrIAMs?t=2163">Official Video</a>}
*/
public static class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View itemView) {
super(itemView);
//TODO: findViewById or ButterKnife
....
//set item view listener
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View itemView) {
if (getAdapterPosition() != RecyclerView.NO_POSITION) {
Context c = itemView.getContext();
//TODO: startActivity
}
}
});
//TODO: set other child views' listener
....
}
}
在自定義適配器中創建自己的構造函數。 例如:
private Context context;
public MyRecyclerViewAdapter(Context context,ArrayList<String> yourList){
this.context=context;
// further code
}
並且在調用適配器時只需傳遞上下文的引用,現在您可以通過調用intent
context.startActivity()
和所有其他方法。
ViewHolder
只是項目特定布局中內部View
對象的容器。 它或您的實現的RecyclerView.Adapter
都不能直接訪問發送Intent
所需的Context
對象。 而不是在這里設置OnClickListener
,而是將它放在適配器的onBindViewHolder()
。 您的適配器可以在其擁有的RecyclerView
附加到適配器時得到通知,因此您可以在私有字段中保存對它的引用。 從該視圖中,您可以調用getContext()
這樣您就可以創建一個Intent
並通過常規方式發送它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.