Android 刷新除所选行之外的整个listview
我在列表视图中动态创建了行。 每行我有一个单选按钮和一个文本视图(文本视图显示一个数字) 单选按钮的名称为“部分”。当我单击单选按钮时,会出现一个对话框,它接受整数输入并更新文本视图上的数字 我只希望在列表视图的所有行中选择一个单选按钮(“部分”),因此当我选择一个单选按钮时,其他单选按钮将被取消选中 因此,当用户在一个单选按钮上选择“Partial”,并且有一个先前标记为“Partial”的单选按钮时,它应该取消选择上一个单选按钮,并在通过对话框更新之前将提到的数字重置为上一个单选按钮。 以下是我尝试过但没有得到期望输出的内容Android 刷新除所选行之外的整个listview,android,android-recyclerview,Android,Android Recyclerview,我在列表视图中动态创建了行。 每行我有一个单选按钮和一个文本视图(文本视图显示一个数字) 单选按钮的名称为“部分”。当我单击单选按钮时,会出现一个对话框,它接受整数输入并更新文本视图上的数字 我只希望在列表视图的所有行中选择一个单选按钮(“部分”),因此当我选择一个单选按钮时,其他单选按钮将被取消选中 因此,当用户在一个单选按钮上选择“Partial”,并且有一个先前标记为“Partial”的单选按钮时,它应该取消选择上一个单选按钮,并在通过对话框更新之前将提到的数字重置为上一个单选按钮。 以下
// this is my adapter class
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private LayoutInflater layoutInflater;
private ArrayList<Bills_model> checkboxClassArrayList;
private ArrayList<Bills_model>checkedItemList;
private OnRecyclerViewItemClickListener onRecyclerViewItemClickListener;
public MyAdapter(Context context,ArrayList<Bills_model> checkboxClassArrayList,ArrayList<Bills_model>chedItemList){
this.context=context;
this.checkboxClassArrayList=checkboxClassArrayList;
this.checkedItemList=chedItemList;
layoutInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = layoutInflater.inflate(R.layout.singlerow_full_partial_paymentselection,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
final Bills_model checkboxClass = checkboxClassArrayList.get(position);
holder.checkBox.setChecked(checkboxClass.isChecked());
holder.amount.setText(String.valueOf(checkboxClass.getTotal_amnt_afterdiscount()));
holder.checkBox.setTag(checkboxClass);
}
@Override
public int getItemCount() {
return checkboxClassArrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
private RadioButton checkBox;
private TextView amount;
public ViewHolder(View itemView)
{
super(itemView);
checkBox = (RadioButton)itemView.findViewById(R.id.rbt_partial);
amount=(TextView) itemView.findViewById(R.id.amount_full_partial);
checkBox.setOnClickListener(this);
amount.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch (v.getId()){
case R.id.rbt_partial:
if(onRecyclerViewItemClickListener!=null)
{
final Bills_model tag = (Bills_model) v.getTag();
tag.setChecked(true);
onRecyclerViewItemClickListener.onItemClick(getAdapterPosition(),v);
}
break;
}
}
}
public void setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener onRecyclerViewItemClickListener){
this.onRecyclerViewItemClickListener=onRecyclerViewItemClickListener;
}}
// this is my on click listener
@Override
public void onItemClick(int position, View view)
{
final Bills_model checkboxClass;
switch (view.getId())
{
case R.id.rbt_partial:
checkboxClass = (Bills_model) view.getTag();
/**/
if(checkboxClass.isChecked())
{
Log.e("SDsd","Ddaerwerwerewrfgsd");
for(int i=0; i<bills_modelArrayList.size(); i++)
{
final Bills_model data = bills_modelArrayList.get(i);
if(data.equals(checkboxClass))
{
Log.e("SDsd","data_if"+data.getTotal_amnt_afterdiscount());
data.setChecked(true);
}
else
{
Log.e("SDsd","data_else"+data.getTotal_amnt_afterdiscount());
data.setChecked(false);
}
}
}
else
{
Log.e("SDsd","data_else"+"elseeeeeee>?????");
}
/**/
final Dialog dialog = new Dialog(Select_Full_Partial_Activity.this);
dialog.setContentView(R.layout.enteramount_partial);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
final EditText text = (EditText) dialog.findViewById(R.id.txtamount_advanceamnt);
TextView ok = (TextView) dialog.findViewById(R.id.txtok_advanceamnt);
// if button is clicked, close the custom dialog
ok.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
double amountToDeduct= Integer.parseInt(text.getText().toString());
double amountenterd= Double.parseDouble(checkboxClass.getTotal_amnt_afterdiscount());
if(amountToDeduct>amountenterd)
{
Toast.makeText(Select_Full_Partial_Activity.this,"You are enterting amount greater than" +String.valueOf(checkboxClass.getTotal_amnt_afterdiscount()),Toast.LENGTH_SHORT).show();
}
else
{
checkboxClass.setTotal_amnt_afterdiscount(""+amountToDeduct);
}
myAdapter.notifyDataSetChanged();
}
});
myAdapter.notifyDataSetChanged();
dialog.show();
break;
case R.id.cb_full:
break;
}
}
//这是我的适配器类
公共类MyAdapter扩展了RecyclerView.Adapter{
私人语境;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
私有ArrayList checkboxClassArrayList;
私有ArrayListcheckedItemList;
私有onRecycleWebItemClickListener onRecycleWebItemClickListener;
公共MyAdapter(上下文上下文、ArrayList checkboxClassArrayList、ArrayList chedItemList){
this.context=context;
this.checkboxClassArrayList=checkboxClassArrayList;
this.checkedItemList=chedItemList;
layoutInflater=layoutInflater.from(上下文);
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
最终视图=布局更平坦。充气(R.layout.singlerow\u full\u partial\u paymentselection,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置)
{
最终账单\u型号checkboxClass=checkboxClassArrayList.get(位置);
holder.checkBox.setChecked(checkboxClass.isChecked());
holder.amount.setText(String.valueOf(checkboxClass.getTotal\u amnt\u afterdiscount());
holder.checkBox.setTag(checkboxClass);
}
@凌驾
public int getItemCount(){
返回checkboxClassArrayList.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener
{
专用单选按钮复选框;
私有文本浏览量;
公共视图持有者(视图项视图)
{
超级(项目视图);
复选框=(单选按钮)itemView.findViewById(R.id.rbt_部分);
amount=(TextView)itemView.findViewById(R.id.amount\u full\u partial);
checkBox.setOnClickListener(此);
amount.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v)
{
开关(v.getId()){
案例R.id.rbt_部分:
if(onRecycleServiceItemClickListener!=null)
{
最终账单模型标签=(账单模型)v.getTag();
tag.setChecked(true);
onRecycleServiceItemClickListener.onItemClick(getAdapterPosition(),v);
}
打破
}
}
}
公共无效设置OnRecycleWebItemClickListener(OnRecycleWebItemClickListener OnRecycleWebItemClickListener){
this.onRecycleWebItemClickListener=onRecycleWebItemClickListener;
}}
//这是我的点击监听器
@凌驾
公共虚空onItemClick(内部位置,视图)
{
最终账单(U型支票箱类);
开关(view.getId())
{
案例R.id.rbt_部分:
checkboxClass=(Bills_model)view.getTag();
/**/
if(checkboxClass.isChecked())
{
Log.e(“SDsd”、“DDAWERWRFGSD”);
对于(int i=0;IAmounted)
{
Toast.makeText(选择“全部”或“部分”活动。这“您输入的金额大于”+String.valueOf(checkboxClass.getTotal\u amnt\u afterdiscount())、Toast.LENGTH\u SHORT.show();
}
其他的
{
checkboxClass.setTotal\u amnt\u afterdiscount(“+AmountToDector”);
}
myAdapter.notifyDataSetChanged();
}
});
myAdapter.notifyDataSetChanged();
dialog.show();
打破
案例R.id.cb_完整:
打破
}
}
//上面的代码对我来说很好,但问题是,每当我点击单选按钮时,以前选择的单选按钮都会被取消选中,但我输入的值会变得相同,但我希望该值也会像以前一样更改