Android在列表视图中隐藏行

Android在列表视图中隐藏行,android,listview,contacts,Android,Listview,Contacts,在我的android应用程序中,我从联系人列表中提取联系人并存储在列表数组中。我在应用程序中显示此联系人列表以供选择。在联系人列表中,用户通常可以存储atm PIN、通行证号码等。。。所以我想避免存储任何低于10位的数字。这里的问题是,我将联系人姓名存储到一个列表数组中,将联系人号码存储到另一个列表数组中。如果我只删除号码..那么我很难删除相应的联系人姓名..我在下面给出我的代码。。有人能帮我解决吗 String name = phones.getString(phones.getColumnI

在我的android应用程序中,我从联系人列表中提取联系人并存储在列表数组中。我在应用程序中显示此联系人列表以供选择。在联系人列表中,用户通常可以存储atm PIN、通行证号码等。。。所以我想避免存储任何低于10位的数字。这里的问题是,我将联系人姓名存储到一个列表数组中,将联系人号码存储到另一个列表数组中。如果我只删除号码..那么我很难删除相应的联系人姓名..我在下面给出我的代码。。有人能帮我解决吗

String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));


 public View getView(final int position, final View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View vi=convertView;
            if(convertView==null)
                vi = mInflater.inflate(R.layout.contact, null);
            tv= (TextView) vi.findViewById(R.id.name);
            tv1= (TextView) vi.findViewById(R.id.mobile);
            cb = (CheckBox) vi.findViewById(R.id.selected);
            tv.setText(name1.get(position));
            //tv.setSelected(true);
            tv1.setText(phno1.get(position));
            cb.setTag(position);
            cb.setChecked(mCheckStates.get(position, false));
            cb.setOnCheckedChangeListener(this);


            String phnoCheckTendigits = tv1.getText().toString();

            if(phnoCheckTendigits.length() < 10)
            {
                vi.setVisibility(View.GONE);
            } 
}
我喜欢这个。。但在这里我得到的是空行

//亲爱的朋友们,我找到了一个解决办法……它奏效了……我在下面给出了答案……我接受了丹尼尔的答案。。。因为这是一个很好的答案。。我是按我的方式做的这就是我在这里加的

 int idx = 0;

                while (idx < phno1.size())
                {
                    if(phno1.get(idx).length() < 10)
                    {
                        // Remove item
                        phno1.remove(idx);
                        name1.remove(idx);
                    }
                    else
                    {
                        ++idx;
                    }
                }

我建议您创建一个模型类,它有两个参数,Name和Number,然后创建一个列表,您可以从Contacts中获取,也可以自己创建,或者让用户创建。一旦您有了列表,您就可以轻松地管理它,添加和删除项目

这是一个模型类示例:

public class Model {
    private String name;
    private String number;

    public Model(String name, String number) {
        this.name = name;
        this.number = number;
}

    public String getName() { return this.name; }
    public String getNumber() { return this.number; }
    public void setName(String name) { this.name = name; }
    public void setNumber(String number) {this.number = number; }
}

然后可以使用不同的类来创建列表:

public class ModelList {
    private List<Model> list;

    public void createList() {
        list.add(new Model("name", "0123456789"));
        ...
    }

    public List<Model> getList() { return list; }
}


注意:我不会限制用户的电话号码>=10,在一些电话号码较小的国家,你的应用程序将毫无用处,甚至对于通常由3个字符组成的紧急号码。

在传递给getView方法之前,尝试从arraylist中删除该对象。为什么不使用一个模型类,该类接受名称和电话号码并将其放入列表中?它比两个不同的数组更容易管理。@Danielle…你能帮我去掉两个列表吗?试着使用LinkedHashMap,其中数字作为键,名称作为值,或者你可以根据需要使用。是的,我知道。。Danielle…但是这个应用程序…只在印度使用。。当手机号码只有10位数时,这只是一个旁注,当然你可以保持这种状态,即使当全世界都在下载你的应用程序时,为什么要把你自己限制在印度呢。
list.removeAt(position /* int */); //if you want to remove a specific position
list.remove(Model); // if you want to remove a specific model