Android 在列表视图中隐藏行

Android hide row in a list view

在我的 android 应用程序中,我从联系人列表中获取联系人并存储在列表中 arrays.this 我在我的应用程序中显示联系人列表以供选择。通常在联系人列表中,用户可以存储 atm 密码,传递书号等...所以我想避免存储任何低于 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);
            } 
}

我喜欢这个..但是我得到的是空行..

//亲爱的朋友们,我找到了一个解决方案……它有效……我在下面给出了它……我接受了 Danieles 的回答……因为这是非常好的答案……我按照我的方式做了..那是我在这里添加它

 int idx = 0;

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

我建议您创建一个模型 class,它有两个参数,名称和号码,然后创建一个列表,您可以从 Contacts 中获取、自己创建或让用户创建它。拥有列表后,您可以轻松管理它、添加和删除项目。

这是一个模型 class 示例:

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; }

}

然后可能有一个不同的 class 来创建一个列表:

public class ModelList {
    private List<Model> list;

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

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

很简单,如果你想从列表中删除一个元素,你有:

list.removeAt(position /* int */); //if you want to remove a specific position

list.remove(Model); // if you want to remove a specific model

注意:我不会限制用户的数字 >= 10,您的应用在某些 phone 数字较小的国家/地区将毫无用处,甚至通常由 3 个字符组成的紧急号码。