Android 要在ListView中按名字和姓氏搜索名字吗?
我有一个名字列表(Firstname+LastName),希望在该列表视图中按Firstname和LastName进行搜索。我使用此代码仅按frstname搜索Android 要在ListView中按名字和姓氏搜索名字吗?,android,Android,我有一个名字列表(Firstname+LastName),希望在该列表视图中按Firstname和LastName进行搜索。我使用此代码仅按frstname搜索 有人能告诉我需要对代码进行哪些更改,以便我也可以按名字和姓氏进行搜索吗?只需遵循以下代码: String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
有人能告诉我需要对代码进行哪些更改,以便我也可以按名字和姓氏进行搜索吗?只需遵循以下代码:
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
MainActivity.java
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
String产品[]={“戴尔Inspiron”、“HTC One X”、“HTC Wildfire S”、“HTC Sense”、“HTC Sensation XE”,
“iPhone 4S”、“三星Galaxy Note 800”,
“三星Galaxy S3”、“MacBook Air”、“MacMini”、“MacBook Pro”};
lv=(ListView)findViewById(R.id.list\u视图);
inputSearch=(EditText)findViewById(R.id.inputSearch);
//向listview添加项目
适配器=新阵列适配器(此,R.layout.list_项,R.id.product_名称,产品);
低压设置适配器(适配器);
MainActivity.java
inputSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列cs、int arg1、int arg2、int arg3){
//当用户更改文本时
MainActivity.this.adapter.getFilter().filter(cs);
}
@凌驾
更改前的公共void(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
}
});
ArrayAdapter已经有了过滤功能,并且ListView可以接受搜索文本,因此您无需重新发明轮子
例如:
每当数据有多个对象时,让一个类保存数据:
Public class FullName {
public final String firstName;
public final String lastName;
public Fullname(String fn, String ln){
this.firstName = fn;
this.lastName = ln;
}
@Override
public String toString(){
// this is what ArrayAdapter uses for display and search
return firstName + " " + lastName;
}
}
内部活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView nameList = new ListView(this);
setContentView(nameList);
ArrayAdapter<FullName> nameAdapter = new ArrayAdapter<FullName>(this,android.R.layout.simple_list_item_1);
nameAdapter.add( new FullName("John","Doe") );
nameAdapter.add( new FullName("Bob","Carson") );
nameAdapter.add( new FullName("Kyle","Connor") );
nameList.setAdapter(nameAdapter);
//bring up the keyboard, start typing on a ListView and it will filter out matching results
nameList.setTextFilterEnabled(true);
}
清除过滤器:
nameAdapter.getFilter.filter(null);
请在此提供您的源代码您是如何显示姓氏的?它是
listview\u数组
还是一个单独的数组?我在几周前回答了这样一个问题,这有帮助吗?至少,它向您展示了如何以及为什么需要创建自定义ArrayAdapter来执行非标准筛选。
nameAdapter.getFilter.filter(null);