Android 我能';我不知道我在代码中遗漏了什么

Android 我能';我不知道我在代码中遗漏了什么,android,android-layout,search,android-listview,radiobuttonlist,Android,Android Layout,Search,Android Listview,Radiobuttonlist,我是Android开发的新手。这是我的密码。实际上,它会生成一个列表,并使用EditText框搜索列表中的特定记录。当我在列表中搜索时,它会给我记录,但当我将其值从“替换”更改为“修复”,或从“修复”更改为“替换”时,它会在后端的数组中成功更改,但用户界面不会更改 代码: public class listViewAdapter_clmform_prtLst extends ArrayAdapter<PartList_Holder> { private ArrayList&

我是Android开发的新手。这是我的密码。实际上,它会生成一个列表,并使用
EditText
框搜索列表中的特定记录。当我在列表中搜索时,它会给我记录,但当我将其值从“替换”更改为“修复”,或从“修复”更改为“替换”时,它会在后端的数组中成功更改,但用户界面不会更改

代码:

public class listViewAdapter_clmform_prtLst extends
    ArrayAdapter<PartList_Holder> {

private ArrayList<PartList_Holder> originalList;
private ArrayList<PartList_Holder> countryList;
private CountryFilter filter;
int index;
Context mcontext;
ViewHolder holder;
String search = "0";

public listViewAdapter_clmform_prtLst(Activity context,
        int rowQuoteapprovel, ArrayList<PartList_Holder> countryList) {
    super(context, rowQuoteapprovel, countryList);

    this.mcontext = context;
    this.countryList = new ArrayList<PartList_Holder>();
    this.countryList.addAll(countryList);
    this.originalList = new ArrayList<PartList_Holder>();
    this.originalList.addAll(countryList);

}

@Override
public Filter getFilter() {
    if (filter == null) {
        filter = new CountryFilter();
    }
    return filter;
}

class ViewHolder {
    TextView partname;
    CheckBox repair;
    CheckBox replace;
}

@SuppressLint("CutPasteId")
@Override
public View getView(final int position, View convertView,
        final ViewGroup parent) {

    holder = null;
    if (convertView == null) {

        LayoutInflater vi = (LayoutInflater) mcontext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = vi.inflate(R.layout.row_quoteapprovel, null);

        holder = new ViewHolder();
        holder.partname = (TextView) convertView
                .findViewById(R.id.tv_partname);
        holder.repair = (CheckBox) convertView
                .findViewById(R.id.CheckBox01);
        holder.replace = (CheckBox) convertView
                .findViewById(R.id.CheckBox02);

        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    final PartList_Holder country = countryList.get(position);

    final CheckBox repair = (CheckBox) convertView
            .findViewById(R.id.CheckBox01);
    final CheckBox replace = (CheckBox) convertView
            .findViewById(R.id.CheckBox02);

    repair.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            ind(country.getPartName());
            holder.repair.setChecked(true);
            Constants.repair[index] = "true";
            holder.replace.setChecked(false);
            Constants.replace[index] = "false";
            // notifyDataSetChanged();

        }
    });
    replace.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            ind(country.getPartName());
            holder.replace.setChecked(true);
            Constants.replace[index] = "true";
            holder.repair.setChecked(false);
            Constants.repair[index] = "false";
            // notifyDataSetChanged();
        }
    });

    holder.partname.setText(country.getPartName());

    if (country.getRepair().equals("true")) {
        holder.repair.setChecked(true);
    } else {
        holder.repair.setChecked(false);
    }
    if (country.getReplace().equals("true")) {
        holder.replace.setChecked(true);
    } else {
        holder.replace.setChecked(false);
    }

    return convertView;
}

public void ind(String text) {
    index = -1;
    for (int i = 0; i < Constants.parts.length; i++) {
        if (Constants.parts[i].equals(text)) {
            index = i;
            break;
        }
    }

}

private class CountryFilter extends Filter {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {

        constraint = constraint.toString().toLowerCase();
        search = (String) constraint;
        FilterResults result = new FilterResults();
        if (constraint != null && constraint.toString().length() > 0) {
            ArrayList<PartList_Holder> filteredItems = new ArrayList<PartList_Holder>();

            for (int i = 0, l = originalList.size(); i < l; i++) {
                PartList_Holder country = originalList.get(i);
                if (country.toString().toLowerCase().contains(constraint))
                    filteredItems.add(country);
            }
            result.count = filteredItems.size();
            result.values = filteredItems;
        } else {
            synchronized (this) {
                result.values = originalList;
                result.count = originalList.size();
            }
        }
        return result;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void publishResults(CharSequence constraint,
            FilterResults results) {

        countryList = (ArrayList<PartList_Holder>) results.values;
        notifyDataSetChanged();
        clear();
        for (int i = 0, l = countryList.size(); i < l; i++)
            add(countryList.get(i));
        notifyDataSetInvalidated();

    }
}
}
公共类listViewAdapter\u clmform\u prtLst扩展
阵列适配器{
私家侦探作家;
私有ArrayList国家列表;
私人乡村过滤器;
整数指数;
语境;
视窗座;
字符串搜索=“0”;
公共listViewAdapter_clmform_prtLst(活动上下文,
int rowQuoteapprovel,ArrayList countryList){
super(上下文、rowquoteaprovel、countryList);
this.mcontext=上下文;
this.countryList=新的ArrayList();
this.countryList.addAll(countryList);
this.originalList=新的ArrayList();
this.originalList.addAll(countryList);
}
@凌驾
公共过滤器getFilter(){
if(filter==null){
过滤器=新的CountryFilter();
}
回流过滤器;
}
类视图持有者{
TextView部件名;
复选框修复;
复选框替换;
}
@SuppressLint(“CutPasteId”)
@凌驾
公共视图getView(最终整型位置,视图转换视图,
最终视图组(父视图){
holder=null;
if(convertView==null){
LayoutFlater vi=(LayoutFlater)mcontext
.getSystemService(上下文布局\充气机\服务);
convertView=vi.充气(R.layout.row“u quoteapprovel,空);
holder=新的ViewHolder();
holder.partname=(TextView)convertView
.findviewbyd(R.id.tv_partname);
holder.repair=(复选框)convertView
.findviewbyd(R.id.CheckBox01);
holder.replace=(复选框)convertView
.findviewbyd(R.id.CheckBox02);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
最终零件列表\持有者国家=国家列表。获取(位置);
最终复选框修复=(复选框)convertView
.findviewbyd(R.id.CheckBox01);
最终复选框替换=(复选框)convertView
.findviewbyd(R.id.CheckBox02);
repair.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ind(country.getPartName());
保持架。修理。设置检查(正确);
常数.repair[index]=“true”;
支架。更换。设置检查(错误);
常量。替换[index]=“false”;
//notifyDataSetChanged();
}
});
replace.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ind(country.getPartName());
支架。更换。设置检查(正确);
常量。替换[index]=“true”;
支架。维修。设置检查(假);
常量.repair[index]=“false”;
//notifyDataSetChanged();
}
});
holder.partname.setText(country.getPartName());
if(country.getRepair().equals(“true”)){
保持架。修理。设置检查(正确);
}否则{
支架。维修。设置检查(假);
}
if(country.getReplace().equals(“true”)){
支架。更换。设置检查(正确);
}否则{
支架。更换。设置检查(错误);
}
返回视图;
}
公共void ind(字符串文本){
指数=-1;
对于(int i=0;i0){
ArrayList filteredItems=新的ArrayList();
for(int i=0,l=originalList.size();i
在搜索之前,查看“修复”和“替换”的第一行值

如果我搜索成功显示的第一个值,我可以检查和取消选中单选按钮

但我回去意味着清除Edittext视图中的字符,它显示以前的值


publishResults
方法中,每次搜索时,都会将下属适配器的数据分配给新的适配器:

countryList = (ArrayList<PartList_Holder>)results.values;

TL;DR
but-,NotifyDatasetChanged()?请根据java代码约定调用类与您的问题无关,但您是如何实现除法器的?使用5个孩子进行线性布局,还是您直接使用画布或其他工具在自定义视图中绘制了5个矩形/直线?@BojanKseneman Bojan我从另一个孩子的数组列表中填充数据。。。这不是静态的,它是动态的,对不起,伙计们,这对我没有帮助。。。我想,我在单选按钮点击事件中遇到了问题,我应该使用逻辑。。。ple
protected FilterResults performFiltering(CharSequence constraint) {
    constraint = constraint.toString().toLowerCase();
    search = (String) constraint;
    FilterResults result = new FilterResults();
    if (TextUtils.isEmpty(constraint)) {
         results.count = contacts.size();
         results.values = contacts;
         return results;
    }
    ArrayList<PartList_Holder> filteredItems = new ArrayList<PartList_Holder>();

    for (int i = 0, l = originalList.size(); i < l; i++) {
        PartList_Holder country = countryList.get(i);
        if (country.toString().toLowerCase().contains(constraint))
            filteredItems.add(country);
        }
        result.count = filteredItems.size();
        result.values = filteredItems;
    }
    return result;
}

protected void publishResults(CharSequence constraint, FilterResults results) {
   clear();
   addAll((List<PartList_Holder>) results.values);
}