Android 列表视图在未找到搜索项后清空,即使在清除搜索项后仍然为空

Android 列表视图在未找到搜索项后清空,即使在清除搜索项后仍然为空,android,listview,search,android-contacts,Android,Listview,Search,Android Contacts,我有一个列表视图,其中我显示最近的联系人,我有Edittext,通过它我可以搜索我最近的列表。当我搜索时,一切都很完美,但当搜索到的项目没有找到,列表变为空并且在清除搜索编辑文本后仍然保持空时,问题就会出现 请告诉我哪里出错了 这是我的密码 RecentContactAdapter public class RecentContactsAdapter extends BaseAdapter { Context mContext; ArrayList<Contacts> coverLi

我有一个列表视图,其中我显示最近的联系人,我有Edittext,通过它我可以搜索我最近的列表。当我搜索时,一切都很完美,但当搜索到的项目没有找到,列表变为空并且在清除搜索编辑文本后仍然保持空时,问题就会出现

请告诉我哪里出错了

这是我的密码

RecentContactAdapter

public class RecentContactsAdapter extends BaseAdapter {
Context mContext;
ArrayList<Contacts> coverList;
public  ArrayList<Contacts> orig;
private ColorGenerator mColorGenerator = ColorGenerator.MATERIAL;
private TextDrawable.IBuilder mDrawableBuilder;
public RecentContactsAdapter(Context c, ArrayList<Contacts> coverList)
{
    super();
    mContext = c;
    this.coverList = coverList;
    this.orig = new ArrayList<Contacts>();
    this.orig.addAll(coverList);

}

@Override
public int getCount()
{
    return coverList.size();
}

@Override
public Contacts getItem(int position) {
    return coverList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

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



    return grid;
}

public void filter(String charText)
{
    charText = charText.toLowerCase(Locale.getDefault());
    coverList.clear();
    if (charText.length() == 0)
    {
        coverList.addAll(orig);
    }

    else
    {
        for (Contacts wp : orig)
        {
            if (wp.getName().toLowerCase(Locale.getDefault())
                    .contains(charText) || wp.getName().toLowerCase(Locale.getDefault())
                    .contains(charText) || wp.getNumber().toLowerCase(Locale.getDefault())
                    .contains(charText))
            {

                if(coverList.contains(wp))
                {}
                else {
                    coverList.add(wp);
                }
            }
        }
    }
    notifyDataSetChanged();
}
公共类RecentContactsAdapter扩展BaseAdapter{
语境;
ArrayList封面列表;
公共ArrayList orig;
专用ColorGenerator McColorGenerator=ColorGenerator.MATERIAL;
私有textdravable.IBuilder mDrawableBuilder;
公共最新联系人附件(上下文c,ArrayList封面列表)
{
超级();
mContext=c;
this.coverList=封面列表;
this.orig=新的ArrayList();
此原始添加(封面列表);
}
@凌驾
public int getCount()
{
返回coverList.size();
}
@凌驾
公共联系人getItem(内部位置){
返回封面列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图)
{
返回网格;
}
公共空过滤器(字符串图表文本)
{
charText=charText.toLowerCase(Locale.getDefault());
coverList.clear();
如果(ChartText.length()==0)
{
封面列表。添加全部(原始);
}
其他的
{
对于(联系人wp:orig)
{
if(wp.getName().toLowerCase(Locale.getDefault())
.contains(charText)| | wp.getName().toLowerCase(Locale.getDefault())
.contains(charText)| | wp.getNumber().toLowerCase(Locale.getDefault())
.contains(图表文本))
{
if(封面清单包含(wp))
{}
否则{
封面列表。添加(wp);
}
}
}
}
notifyDataSetChanged();
}
}

RecentContactFragment

public class RecentContactsTab extends Fragment
{
View v;
Context c;
public static ListView rec_list;
ArrayList<Contacts> recent_list;
public static RecentContactsAdapter rec_ContactsAdapter;
ProgressDialog pd;
public static String number;
boolean appInstalled;
public static String email;
EditText search;
Functions functions;
VariableListener mCallback;
TextView noContact;
RecentContactsAdapter search_adapter;
RelativeLayout list;


@Override
public void onAttach(Context context) {
    try {
        mCallback = (VariableListener) context;
    } catch (ClassCastException e) {
        e.printStackTrace();
    }
    super.onAttach(context);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{ Log.e("STEP","1");
    v = inflater.inflate(R.layout.recent_layout, container, false);
    c = this.getActivity();

    rec_list = (ListView) v.findViewById(R.id.contact);
    recent_list = new ArrayList<Contacts>();
    search= (EditText) v.findViewById(R.id.recentsearch);

    v.findViewById(R.id.searchView1);
    noContact = (TextView) v.findViewById(R.id.rec_noContact);
    list= (RelativeLayout) v.findViewById(R.id.leftSide);
    tabLayout.getSelectedTabPosition();

    mCallback.onVariableListener(0);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
    {
        new GetCotact().execute();
    } else
        {
        functions = new Functions(c);
        if (Settings.canDrawOverlays(c) && functions.checkpermission()) {
            new GetCotact().execute();
        } else {
            if (!Settings.canDrawOverlays(c)) {
                Intent i = new Intent(this.getActivity(), AllPermissions.class);
                startActivity(i);
            } else if (!functions.checkpermission()) {
                Intent i = new Intent(this.getActivity(), AllPermissions.class);
                startActivity(i);
            }
        }
    }

   rec_list.setTextFilterEnabled(true);

    setupSearchView();
    return v;
}

private void setupSearchView() {

    search.addTextChangedListener(new TextWatcher()
    {

        @Override
        public void afterTextChanged(Editable arg0)
        {
            String text = search.getText().toString().toLowerCase(Locale.getDefault());

            if (recent_list.size() > 0)
            {
                rec_ContactsAdapter.filter(text);
            }

            else
            {
                    rec_ContactsAdapter = new RecentContactsAdapter(getActivity(), recent_list);
                    rec_list.setAdapter(rec_ContactsAdapter);

            }
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                                      int arg2, int arg3)
        {
            search_adapter = new RecentContactsAdapter(getActivity(), recent_list);
            rec_list.setAdapter(rec_ContactsAdapter);
        }

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                  int arg3) {
            // TODO Auto-generated method stub
        }
    });
}

class GetCotact extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        Log.e("STEP","2");
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(String s)
    {
        rec_ContactsAdapter = new RecentContactsAdapter(c, recent_list);
        search_adapter=rec_ContactsAdapter;
        rec_list.setAdapter(rec_ContactsAdapter);
        super.onPostExecute(s);
    }

    @Override
    protected String doInBackground(String... params) {
        readContacts();
        return null;

    }
}

private void readContacts() {
    ContentResolver cr = getActivity().getContentResolver();

    if (ActivityCompat.checkSelfPermission(this.getActivity(), Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {

    }
    else
    {
        Cursor cur = cr.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls._ID + " DESC");
        String phone = null;
        String emailContact = null;
        String image_uri = null;
        Bitmap bitmap;
        String name;


        if (cur.getCount() > 0)
        {
            while (cur.moveToNext())
            {
                Log.e("STEP","3");
                name = cur.getString(cur
                        .getColumnIndex(CallLog.Calls.CACHED_NAME));
                phone=cur.getString(cur.getColumnIndex(CallLog.Calls.NUMBER));

                if (name==null)
                {
                    name=" ";
                    phone=cur.getString(cur.getColumnIndex(CallLog.Calls.NUMBER));

                    image_uri=null;
                }
                else
                {
                    name = cur.getString(cur
                            .getColumnIndex(CallLog.Calls.CACHED_NAME));
                }

                recent_list.add(new Contacts(name, phone, image_uri,emailContact));
                emailContact="";
                phone="";
            }
            cur.close();
        }
        else
        {
            noContact.setVisibility(View.VISIBLE);
            noContact.setTextColor(getResources().getColor(R.color.default_color));
            noContact.setText("No Recent Contacts");
            list.setVisibility(View.GONE);
            search.setVisibility(View.GONE);
        }
    }

}

@Override
public void onResume()
{
    Log.e("STEP","4");
    super.onResume();
}
公共类RecentContactsTab扩展片段
{
观点五;
上下文c;
公共静态ListView记录列表;
ArrayList最近的_列表;
公共静态最近联系人适配器rec_contacts适配器;
进展性帕金森病;
公共静态字符串号;
已安装布尔应用程序;
公共静态字符串电子邮件;
编辑文本搜索;
功能;
可变侦听器mCallback;
文本视图无联系人;
最近联系适配器搜索适配器;
相对性列表;
@凌驾
公共void-onAttach(上下文){
试一试{
mCallback=(VariableListener)上下文;
}catch(ClassCastException e){
e、 printStackTrace();
}
super.onAttach(上下文);
}
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState)
{Log.e(“步骤”,“1”);
v=充气机。充气(R布局。最新布局,容器,假);
c=this.getActivity();
记录列表=(列表视图)v.findviewbyd(R.id.contact);
最近的列表=新的ArrayList();
search=(EditText)v.findViewById(R.id.recentsearch);
v、 findViewById(R.id.searchView1);
noContact=(TextView)v.findViewById(R.id.rec_noContact);
list=(RelativeLayout)v.findViewById(R.id.leftSide);
tabLayout.getSelectedTabPosition();
mCallback.onVariableListener(0);
if(Build.VERSION.SDK_INT0)
{
rec_ContactsAdapter.filter(文本);
}
其他的
{
rec_ContactsAdapter=new RecentContactsAdapter(getActivity(),recent_list);
记录列表。设置适配器(记录联系人适配器);
}
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3)
{
search_adapter=new RecentContactsAdapter(getActivity(),recent_list);
记录列表。设置适配器(记录联系人适配器);
}
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
});
}
类GetCotact扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
Log.e(“步骤”,“2”);
super.onPreExecute();
}
@凌驾
受保护的void onPostExecute(字符串s)
{
rec_ContactsAdapter=新的最近的ContactsAdapter(c,最近的_列表);
搜索适配器=记录联系人适配器;
记录列表。设置适配器(记录联系人适配器);
super.onPostExecute(s);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
readContacts();
返回null;
}
}
私有void readContacts(){
ContentResolver cr=getActivity().getContentResolver();
if(ActivityCompat.checkSelfPermission(this.getActivity()、Manifest.permission.READ\u CALL\u LOG)!=PackageManager.permission\u provided){
}
其他的
{
if (charText.length() == 0)
{
    coverList.addAll(orig);
}
if (charText.length() == 0)
{
    coverList.addAll(orig);
    notifyDataSetChanged();
}
 if (recent_list.size() > 0)
        {
            rec_ContactsAdapter.filter(text);
        }

        else
        {
                rec_ContactsAdapter = new RecentContactsAdapter(getActivity(), recent_list);
                rec_list.setAdapter(rec_ContactsAdapter);

        }
rec_ContactsAdapter.filter(text);
 search_adapter = new RecentContactsAdapter(getActivity(), recent_list);
 rec_list.setAdapter(rec_ContactsAdapter);