Android 通过在recyclerview中单击按钮在特定文本视图中增加值
我正在开发一个应用程序,它可以使用recycler view和volley显示图像。我在每张卡上都有imageview、textview和按钮。我正在尝试向我的按钮添加功能,当单击按钮时,将计算单击次数并在文本视图中显示它。当我单击按钮时,所有d行中的所有文本视图都会以相同的单击次数更新,无论在任何行上单击了哪个按钮。我只想更新点击了d按钮的d行的文本视图。我做错了什么?这是密码Android 通过在recyclerview中单击按钮在特定文本视图中增加值,android,button,android-recyclerview,counter,increment,Android,Button,Android Recyclerview,Counter,Increment,我正在开发一个应用程序,它可以使用recycler view和volley显示图像。我在每张卡上都有imageview、textview和按钮。我正在尝试向我的按钮添加功能,当单击按钮时,将计算单击次数并在文本视图中显示它。当我单击按钮时,所有d行中的所有文本视图都会以相同的单击次数更新,无论在任何行上单击了哪个按钮。我只想更新点击了d按钮的d行的文本视图。我做错了什么?这是密码 import android.content.Context; import android.media.Image
import android.content.Context;
import android.media.Image;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Belal on 11/9/2015.
*/
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
int count = 0;
//Imageloader to load image
private ImageLoader imageLoader;
private Context context;
//List to store all superheroes
List<SuperHero> superHeroes;
//Constructor of this class
public CardAdapter(List<SuperHero> superHeroes, Context context){
super();
//Getting all superheroes
this.superHeroes = superHeroes;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.superheroes_list, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
//Getting the particular item from the list
SuperHero superHero = superHeroes.get(position);
//Loading image from url
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(superHero.getImageUrl(), ImageLoader.getImageListener(holder.imageView, R.drawable.image, android.R.drawable.ic_dialog_alert));
//Showing data on the views
holder.imageView.setImageUrl(superHero.getImageUrl(), imageLoader);
holder.textViewName.setText(superHero.getName());
holder.textViewPublisher.setText(superHero.getPublisher());
holder.textViewLikes.setText(superHero.getLikes());
holder.custom_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count ++;
holder.txtCount.setText(String.valueOf(count));
}
});
}
@Override
public int getItemCount() {
return superHeroes.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
//Views
public NetworkImageView imageView;
public TextView textViewName;
public TextView textViewPublisher;
public TextView textViewLikes;
public TextView txtCount;
public ImageButton custom_button;
//Initializing Views
public ViewHolder(View itemView) {
super(itemView);
imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher);
textViewLikes = (TextView) itemView.findViewById(R.id.textViewlikes);
txtCount = (TextView)itemView.findViewById(R.id.txtCount);
custom_button = (ImageButton) itemView.findViewById(R.id.custom_button);
}
}
}
导入android.content.Context;
导入android.media.Image;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.ImageButton;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入com.android.volley.toolbox.ImageLoader;
导入com.android.volley.toolbox.NetworkImageView;
导入org.w3c.dom.Text;
导入java.util.ArrayList;
导入java.util.List;
/**
*由Belal于2015年11月9日创建。
*/
公共类CardAdapter扩展了RecyclerView.Adapter{
整数计数=0;
//Imageloader以加载图像
私有图像加载器;
私人语境;
//存储所有超级英雄的列表
列出超级英雄;
//这个类的构造函数
公共卡适配器(列出超级英雄、上下文){
超级();
//获得所有超级英雄
这个。超级英雄=超级英雄;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.Superheros\u列表,父级,错误);
视窗夹持器视窗夹持器=新视窗夹持器(v);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
//从列表中获取特定项
超级英雄超级英雄=超级英雄。获取(位置);
//从url加载图像
imageLoader=CustomVolleyRequest.getInstance(上下文).getImageLoader();
imageLoader.get(superHero.getImageUrl(),imageLoader.getImageListener(holder.imageView,R.drawable.image,android.R.drawable.ic_对话框_警报));
//显示视图上的数据
holder.imageView.setImageUrl(superHero.getImageUrl(),imageLoader);
holder.textViewName.setText(superHero.getName());
holder.textViewPublisher.setText(superHero.getPublisher());
holder.textViewLikes.setText(superHero.getLikes());
holder.custom_button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
计数++;
holder.txtCount.setText(String.valueOf(count));
}
});
}
@凌驾
public int getItemCount(){
返回超级英雄。大小();
}
类ViewHolder扩展了RecyclerView.ViewHolder{
//观点
公共网络图像视图;
公共文本视图文本视图名称;
公共文本视图文本视图发布者;
公共文本视图文本视图;
公共文本视图txtCount;
公共图像按钮自定义按钮;
//初始化视图
公共视图持有者(视图项视图){
超级(项目视图);
imageView=(NetworkImageView)itemView.findViewById(R.id.imageViewHero);
textViewName=(TextView)itemView.findViewById(R.id.textViewName);
textViewPublisher=(TextView)itemView.findViewById(R.id.textViewPublisher);
textViewLikes=(TextView)itemView.findViewById(R.id.textViewLikes);
txtCount=(TextView)itemView.findViewById(R.id.txtCount);
自定义按钮=(ImageButton)itemView.findViewById(R.id.custom按钮);
}
}
}
您正在更新定义为类成员的变量(count
)。你的取景器应该为每个实例都有自己的计数器,然后为每张卡使用该值。你有什么解决方案吗?我也像那个问题一样寻找和挣扎,回收器视图,每行项目的likes计数任意次数能够喜欢和喜欢api的计数数据如何更新特定列表项目视图上的api响应您正在更新定义为类成员的变量(count
)。你的视图持有者应该为每个实例都有自己的计数器,然后为每个卡使用该值。你有什么解决方案吗?我也在寻找和解决这个问题,回收器视图,每行项目的喜欢次数,可以喜欢多少次,喜欢多少次api数据如何更新特定列表项目视图上的api响应