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 个字符组成的紧急号码。
在我的 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 个字符组成的紧急号码。