在 android 的 RecyclerView 中可点击一项
one item clickable in RecyclerView in android
我正在开发某种教育游戏,在这个游戏中,我在 recyclerview 中代表九个级别,每个级别在上一个级别启用时,现在我正在尝试在 recycler View 中启用一个项目,并且其他人无法,我一直在 youtube 和其他网站上搜索,我的问题是如何去做?(注意:我是 android studio 的新手,所以尽可能保持简单)。
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> {
private List<ItemView> items;
private Context context;
public ListAdapter(List<ItemView> items , Context context){
this.items = items;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_list , parent , false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ItemView i = items.get(position);
holder.setHeadText(i.getHead());
holder.setScoreText(i.getScore());
}
@Override
public int getItemCount() {
return items.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView headText , scoreText;
public ViewHolder(View itemView) {
super(itemView);
headText = (TextView)itemView.findViewById(R.id.head);
scoreText = (TextView)itemView.findViewById(R.id.score);
}
public void setHeadText(String headText) {
this.headText.setText(headText);
}
public void setScoreText(String scoreText) {
this.scoreText.setText(scoreText);
}
}
}
您可以通过
实现
在你的适配器中添加这样的接口class
public interface ItemClickListner{
void onItemClick(ItemView item);
}
初始化此接口
private ItemClickListner clickManager;
添加参数适配器class构造函数
public ListAdapter(List<ItemView> items , Context context,ItemClickListner clickManager){
this.items = items;
this.context = context;
this.clickManager=clickManager;
}
在您的 ViewHolder 中为 itemView 添加一个 OnClickListner
itemView.setOnClickListener(this);
在您的 onClick
覆盖函数中
if(clickManager!=null)
clickManager.onItemClick(items.get(getAdapterPosition()));
此示例展示了如何为您的 adapter
中的项目实现 onClick listener
,以及如何获取被点击项目的位置。在这种情况下,我的目标是仅使 Recyler-View
中的 fifth 视图可点击。
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView headText , scoreText;
public ViewHolder(View itemView) {
super(itemView);
headText = (TextView)itemView.findViewById(R.id.head);
scoreText = (TextView)itemView.findViewById(R.id.score);
}
@Override
public void onClick(View view) {
if(getLayoutPosition()==5){
//your code goes here...
}
}
}
我正在开发某种教育游戏,在这个游戏中,我在 recyclerview 中代表九个级别,每个级别在上一个级别启用时,现在我正在尝试在 recycler View 中启用一个项目,并且其他人无法,我一直在 youtube 和其他网站上搜索,我的问题是如何去做?(注意:我是 android studio 的新手,所以尽可能保持简单)。
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> {
private List<ItemView> items;
private Context context;
public ListAdapter(List<ItemView> items , Context context){
this.items = items;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_list , parent , false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ItemView i = items.get(position);
holder.setHeadText(i.getHead());
holder.setScoreText(i.getScore());
}
@Override
public int getItemCount() {
return items.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView headText , scoreText;
public ViewHolder(View itemView) {
super(itemView);
headText = (TextView)itemView.findViewById(R.id.head);
scoreText = (TextView)itemView.findViewById(R.id.score);
}
public void setHeadText(String headText) {
this.headText.setText(headText);
}
public void setScoreText(String scoreText) {
this.scoreText.setText(scoreText);
}
}
}
您可以通过
实现在你的适配器中添加这样的接口class
public interface ItemClickListner{
void onItemClick(ItemView item);
}
初始化此接口
private ItemClickListner clickManager;
添加参数适配器class构造函数
public ListAdapter(List<ItemView> items , Context context,ItemClickListner clickManager){
this.items = items;
this.context = context;
this.clickManager=clickManager;
}
在您的 ViewHolder 中为 itemView 添加一个 OnClickListner
itemView.setOnClickListener(this);
在您的 onClick
覆盖函数中
if(clickManager!=null)
clickManager.onItemClick(items.get(getAdapterPosition()));
此示例展示了如何为您的 adapter
中的项目实现 onClick listener
,以及如何获取被点击项目的位置。在这种情况下,我的目标是仅使 Recyler-View
中的 fifth 视图可点击。
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView headText , scoreText;
public ViewHolder(View itemView) {
super(itemView);
headText = (TextView)itemView.findViewById(R.id.head);
scoreText = (TextView)itemView.findViewById(R.id.score);
}
@Override
public void onClick(View view) {
if(getLayoutPosition()==5){
//your code goes here...
}
}
}