私は整数が各リサイクラービューアイテム内でインクリメントおよびデクリメントされるテキストカウンターを実装しようとしています。たとえば、整数を取得しようとし、ボタンクリックでi ++を実行することから始めますが、ここで問題は整数です。ボタンをクリックするとrecyclerviewアイテムの特定の位置にのみ制限され、実際には整数をインクリメントしますが、同時に別のアイテムのボタンをクリックすると、テキストカウンターは既に設定された整数から始まります。
これは私のリサイクラービュークラスです。
public class Mainadapter extends RecyclerView.Adapter<Mainadapter.exViewHolder> {
List<OrderItemFragment.Ex> exList;
Context mContext;
AlertDialog levelDialog;
int i=0;
boolean a = false;
FirebaseFirestore db = FirebaseFirestore.getInstance();
Mainadapter(List exList, Context context) {
this.exList= exList;
this.mContext = context;
}
public static class exViewHolder extends RecyclerView.ViewHolder{
TextView exname;
ImageView exlogo,attach;
TextView tv;
ImageView add,sub;
exViewHolder(View itemView){
super(itemView);
exname= itemView.findViewById(R.id.menuname);
exlogo=itemView.findViewById(R.id.imgmenu);
attach=itemView.findViewById(R.id.attach);
tv=itemView.findViewById(R.id.tvqty);
add=itemView.findViewById(R.id.additem);
sub=itemView.findViewById(R.id.removeitem);
}
}
@Override
public Mainadapter.exViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View viewthigh= LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_item,parent,false);
Mainadapter.exViewHolder evh=new Mainadapter.exViewHolder(viewthigh);
return evh;
}
@Override
public void onBindViewHolder(final Mainadapter.exViewHolder holder, final int position){
holder.exname.setText(exList.get(position).name);
holder.exlogo.setImageResource(exList.get(position).logoId);
holder.attach.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,"Attach Clicked",Toast.LENGTH_LONG).show();
}
});
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (i!=0&&a==false){
i=0;
a=false;
}
else {
holder.tv.setText(String.valueOf(i++));
}
}
});
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.tv.setText(String.valueOf(i--));
}
});
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView){
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return exList.size();
}
ちょうどクリックで整数をリセットするロジックを理解できないだけで、どんな提案も歓迎されます。
これは、 "OrderItemFragment.Ex"という名前のリストモデルクラスにもう1つのint変数を追加することで実現できます。
これで、recyclerviewのアイテムごとに個別のカウンターができました。
「OrderItemFragment.Ex」に「count」変数があるとします。したがって、次のような操作を実行できます。
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = exList.get(position).count;
holder.tv.setText(String.valueOf(i++));
exList.get(position).count = i;
}
});
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = exList.get(position).count;
holder.tv.setText(String.valueOf(i--)); exList.get(position).count = i;
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加