Android 无法使用之前设置的按钮从customAdapter更改textview值,为什么?

Android 无法使用之前设置的按钮从customAdapter更改textview值,为什么?,android,listview,custom-adapter,Android,Listview,Custom Adapter,我已经从ArrayList中设置了textView的值,如下所示 mealCounterTV = (TextView) view.findViewById(R.id.counterTV); mealCounterTV.setText(quantityList.get(position)); 有一个按钮,我试图通过单击该按钮来更改textview值,该值正在更改,但无法将更改后的值设置为textview addBtn.setOnClickListener(new

我已经从ArrayList中设置了textView的值,如下所示

        mealCounterTV = (TextView) view.findViewById(R.id.counterTV);
        mealCounterTV.setText(quantityList.get(position));
有一个按钮,我试图通过单击该按钮来更改textview值,该值正在更改,但无法将更改后的值设置为textview

addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                count = Integer.parseInt(mealCounterTV.getText().toString());
                count++;
                mealCounterTV.setText(String.valueOf(count));
                notifyDataSetChanged();
            }
        });
有人能指出我哪里做错了吗? 我的整个适配器是这样的

package com.nerdcastle.nazmul.mealdemo;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;


class AdapterForMealSubmission extends BaseAdapter {
    ViewHolder holder;
    Activity activity;
    ArrayList<String> employeeNameList = new ArrayList<>();
    ArrayList<String> quantityList = new ArrayList<>();

    public AdapterForMealSubmission(Activity activity, ArrayList<String> employeeNameList, ArrayList<String> quantityList) {
        super();
        this.activity = activity;
        this.employeeNameList = employeeNameList;
        this.quantityList = quantityList;
    }

    public int getCount() {
        return quantityList.size();
    }

    public Object getItem(int position) {
        return quantityList.get(position);
    }

    public long getItemId(int position) {
        return 0;
    }

    private class ViewHolder {
        public TextView nameTV;
        public Button deleteBtn;
        public Button addBtn;
        public TextView mealCounterTV;
    }


    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = activity.getLayoutInflater();

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.custom_row_for_meal_submission, null);
            holder = new ViewHolder();
            holder.mealCounterTV = (TextView) convertView.findViewById(R.id.counterTV);
            holder.nameTV = (TextView) convertView.findViewById(R.id.nameTV);
            holder.deleteBtn = (Button) convertView.findViewById(R.id.minus_btn);
            holder.addBtn = (Button) convertView.findViewById(R.id.add_btn);
            convertView.setTag(holder);

            holder.addBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    int count = Integer.parseInt(holder.mealCounterTV.getText().toString());
                    count++;
                    holder.mealCounterTV.setText("" + count);
                    notifyDataSetChanged();
                }
            });
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.mealCounterTV.setText(quantityList.get(position));
        holder.nameTV.setText(employeeNameList.get(position));
        holder.addBtn.setTag(holder);
        holder.deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int count = Integer.parseInt(holder.mealCounterTV.getText().toString());
                if (count > 0) {
                    count--;
                }
                holder.mealCounterTV.setText("" + count);
                notifyDataSetChanged();
            }
        });

        return convertView;
    }

}
package com.nerdcastle.nazmul.mealdemo;
导入android.app.Activity;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.TextView;
导入java.util.ArrayList;
类AdapterPerformeAlSubmission扩展了BaseAdapter{
视窗座;
活动;
ArrayList employeeNameList=新建ArrayList();
ArrayList quantityList=新的ArrayList();
公共AdapterPerformeAlSubmission(活动活动、ArrayList employeeNameList、ArrayList quantityList){
超级();
这个。活动=活动;
this.employeeNameList=employeeNameList;
this.quantityList=quantityList;
}
public int getCount(){
返回quantityList.size();
}
公共对象getItem(int位置){
返回quantityList.get(位置);
}
公共长getItemId(int位置){
返回0;
}
私有类视窗持有者{
公共文本视图名称电视;
公共按钮删除BTN;
公共按钮addBtn;
公共文本视图mealCounterTV;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气器=活动。getLayoutInflater();
if(convertView==null){
convertView=充气机。充气(R.layout.custom\u row\u用于提交膳食,空);
holder=新的ViewHolder();
holder.mealCounterTV=(TextView)convertView.findViewById(R.id.counterTV);
holder.nameTV=(TextView)convertView.findViewById(R.id.nameTV);
holder.deleteBtn=(按钮)convertView.findViewById(R.id.减号\u btn);
holder.addBtn=(按钮)convertView.findViewById(R.id.add_btn);
convertView.setTag(支架);
holder.addBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int count=Integer.parseInt(holder.mealCounterTV.getText().toString());
计数++;
holder.mealCounterTV.setText(“+count”);
notifyDataSetChanged();
}
});
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.mealCounterTV.setText(quantityList.get(position));
holder.nameTV.setText(employeeNameList.get(position));
holder.addBtn.setTag(holder);
holder.deleteBtn.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
int count=Integer.parseInt(holder.mealCounterTV.getText().toString());
如果(计数>0){
计数--;
}
holder.mealCounterTV.setText(“+count”);
notifyDataSetChanged();
}
});
返回视图;
}
}

尝试从单击侦听器中删除notifyDataSetChanged。因为这将导致适配器重新绑定列表中的值,并将列表重置为初始状态。

设置文本后执行
notifyDataSetChanged()
有什么原因吗?因为每次这样做时,它都会用正在传递的数据集中的值覆盖新的textView值。

请更简要地解释您的问题。就像您在数组列表值或活动中更改一样?我在adapter classYup中做所有事情。他没有改变数组数据的值。