如何在Android中比较字符串与自动完成列表视图

如何在Android中比较字符串与自动完成列表视图,android,Android,我想将字符串与自动完成列表视图进行比较,并从自动完成列表视图中删除我不想在自动完成列表视图中显示的字符串。请有人建议我如何从自动完成列表视图中删除可比较的字符串。提前谢谢 这是我的自动完成适配器类代码 public class AutoCompleteAdapter extends ArrayAdapter<AutoCompleteObject> { Context context; int resource, textViewResourceId; Lis

我想将字符串与自动完成列表视图进行比较,并从自动完成列表视图中删除我不想在自动完成列表视图中显示的字符串。请有人建议我如何从自动完成列表视图中删除可比较的字符串。提前谢谢

这是我的自动完成适配器类代码

public class AutoCompleteAdapter extends ArrayAdapter<AutoCompleteObject> {

    Context context;
    int resource, textViewResourceId;
    List<AutoCompleteObject> items, tempItems, suggestions;
    String str_Authentication_Token ,str_UserId ,str_UserName ,str_UserRole , strUserId;

    public AutoCompleteAdapter(Context context, int resource, int textViewResourceId, List<AutoCompleteObject> items) {
        super(context, resource, textViewResourceId, items);
        this.context = context;
        this.resource = resource;
        this.textViewResourceId = textViewResourceId;
        this.items = items;
        tempItems = new ArrayList<AutoCompleteObject>(items); // this makes the difference.
        suggestions = new ArrayList<AutoCompleteObject>();

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
        str_Authentication_Token = sharedPreferences.getString("strAuthentication_Token", "");
        str_UserId = sharedPreferences.getString("strUserId", "");
        str_UserName = sharedPreferences.getString("strUserName", "");
        str_UserRole = sharedPreferences.getString("strUserRole","");

        Log.e(" "," str_Authentication_Token " + str_Authentication_Token + " str_UserId "+ str_UserId + " str_UserName "+ str_UserName + " str_UserRole " + str_UserRole);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.serach_arraylist, parent, false);
        }
        AutoCompleteObject autoCompleteObjects = items.get(position);
        if (autoCompleteObjects != null)
        {
            TextView lblName = (TextView) view.findViewById(R.id.textView_Useranames);
            ImageView imgFolowUp = (ImageView)view.findViewById(R.id.imageView_followUp);
            if (lblName != null)
            {
                lblName.setText(autoCompleteObjects.getInspectorName());
                String strlblName = lblName.getText().toString().trim();
                String strActiveStatus = autoCompleteObjects.getActiveStatus();
                Log.e(" strActiveStatus "," #### "+ strActiveStatus );
                String strFollowUpStatus = autoCompleteObjects.getFollowFlag();

                String strInspectorId = autoCompleteObjects.getInspectorId();
                Log.e(" strInspectorId "," = "+strInspectorId);

                if(str_UserId.equals(strInspectorId))
                {
                    items.remove(str_UserId);
                    notifyDataSetChanged();
                }

                if(strActiveStatus.equals("1") && strFollowUpStatus.equals("1"))
                {
                    Log.e("strFollowUpStatus ", " = " + strFollowUpStatus + " strlblName = " + strlblName + " strActiveStatus " + strActiveStatus +" strFollowUpStatus " + strFollowUpStatus);
                    imgFolowUp.setImageResource(R.drawable.follow_grren_mark);
                }
            }
        }
        return view;
    }

    @Override
    public Filter getFilter() {
        return nameFilter;
    }

    /**
     * Custom Filter implementation for custom suggestions we provide.
     */
    Filter nameFilter = new Filter() {
        @Override
        public CharSequence convertResultToString(Object resultValue) {
            String str = ((AutoCompleteObject) resultValue).getInspectorName();
            return str;
        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            if (constraint != null) {
                suggestions.clear();
                for (AutoCompleteObject autoCompleteObject : tempItems) {
                    if (autoCompleteObject.getInspectorName().toLowerCase().contains(constraint.toString().toLowerCase())) {
                        suggestions.add(autoCompleteObject);
                    }
                }
                FilterResults filterResults = new FilterResults();
                filterResults.values = suggestions;
                filterResults.count = suggestions.size();
                return filterResults;
            } else {
                return new FilterResults();
            }
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            List<AutoCompleteObject> filterList = (ArrayList<AutoCompleteObject>) results.values;
            if (results != null && results.count > 0)
            {
                clear();
                for (AutoCompleteObject autoCompleteObject : filterList) {
                    add(autoCompleteObject);
                    notifyDataSetChanged();
                }
            }
        }
    };
}
公共类自动完成适配器扩展了ArrayAdapter{
语境;
int资源,textViewResourceId;
列出项目、临时项目、建议;
字符串str_身份验证\u令牌、str_用户标识、str_用户名、str_用户角色、strUserId;
公共自动完成适配器(上下文上下文、int资源、int文本视图资源ID、列表项){
超级(上下文、资源、textViewResourceId、项目);
this.context=上下文;
这个资源=资源;
this.textViewResourceId=textViewResourceId;
这个项目=项目;
tempItems=newarraylist(items);//这会产生不同。
建议=新建ArrayList();
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(context.getApplicationContext());
str_Authentication_Token=SharedReferences.getString(“strAuthentication_Token”,下称“);
str_UserId=SharedReferences.getString(“strUserId”,即“”);
str_UserName=SharedReferences.getString(“strUserName”,即“”);
str_UserRole=SharedReferences.getString(“strUserRole”,即“”);
Log.e(“,”str_身份验证_令牌“+str_身份验证_令牌+”str_用户标识“+str_用户标识+”str_用户名“+str_用户名+”str_用户角色“+str_用户角色”);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.serach_arraylist,父级,false);
}
自动完成对象自动完成对象=items.get(位置);
if(自动完成对象!=null)
{
TextView lblName=(TextView)view.findViewById(R.id.TextView_Useranames);
ImageView imgFolowUp=(ImageView)view.findViewById(R.id.ImageView\u followUp);
如果(lblName!=null)
{
lblName.setText(autoCompleteObjects.getInspectorName());
字符串strlblName=lblName.getText().toString().trim();
字符串strActiveStatus=autoCompleteObjects.getActiveStatus();
Log.e(“strActiveStatus”,“#####”+strActiveStatus);
字符串strFollowUpStatus=autoCompleteObjects.getFollowFlag();
String strInspectorId=autoCompleteObjects.getInspectorId();
Log.e(“strInspectorId”,“=”+strInspectorId);
if(str_UserId.equals(strInspectorId))
{
删除(str_UserId);
notifyDataSetChanged();
}
if(strActiveStatus.equals(“1”)&strFollowUpStatus.equals(“1”))
{
Log.e(“strFollowUpStatus”,“=”+strFollowUpStatus+“strlblName=“+strlblName+“strActiveStatus”+strActiveStatus+“strFollowUpStatus”+strFollowUpStatus”);
imgFolowUp.setImageResource(R.drawable.follow_grren_mark);
}
}
}
返回视图;
}
@凌驾
公共过滤器getFilter(){
返回名称过滤器;
}
/**
*我们提供的自定义建议的自定义筛选器实现。
*/
过滤器名称过滤器=新过滤器(){
@凌驾
public CharSequence ConvertResultString(对象结果值){
字符串str=((自动完成对象)结果值).getInspectorName();
返回str;
}
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
if(约束!=null){
建议。清晰();
例如(自动完成对象自动完成对象:tempItems){
if(autoCompleteObject.getInspectorName().toLowerCase().contains(constraint.toString().toLowerCase())){
建议。添加(自动完成对象);
}
}
FilterResults FilterResults=新的FilterResults();
filterResults.values=建议;
filterResults.count=建议.size();
返回过滤器结果;
}否则{
返回新的FilterResults();
}
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
List filterList=(ArrayList)results.values;
if(results!=null&&results.count>0)
{
清除();
例如(自动完成对象自动完成对象:过滤器列表){
添加(自动完成对象);
notifyDataSetChanged();
}
}
}
};
}

您正在建议中添加数据。。从偏好中获取数据进行比较,对吗?我不明白这个过程。请解释这意味着我不想在自动完成列表中添加在应用程序中登录的用户名。在登录时,我必须将登录数据存储在首选项中。当我在显示列表之前从sq lite填充自动完成列表时,我不想添加登录用户名。这就是为什么我要将首选项数据与自动完成列表项进行比较。因此,最好只查询要在首选项中显示的数据列表只需在查询中添加WHERE条件,即可获得所有必需的结果。这是不可能的。为什么不可能呢?