主要原理:是在主界面有两个空间,一个是EditText,一个是ListView,ListView是放在EditText下面的,然后自定义建立一个adapter适配器,这个适配器要继承Filterable这个接口,并实现这个接口的两个方法,一
主要原理:是在主界面有两个空间,一个是EditText,一个是ListView,ListView是放在EditText下面的,然后自定义建立一个adapter适配器,
这个适配器要继承Filterable这个接口,并实现这个接口的两个方法,一个是过滤方法,一个是过滤后的方法,一般我们是在过滤方法里面实现过滤,
在过滤后的方法里面调用notifyDataSetChanged();也就是使适配器更新数据,这里还有用到一个pinyin4j-2.5.0.jar的架包,这个主要是汉字转拼
音的功能
MainActivity.Java
public class MainActivity extends Activity { private EditText et_filter; private UserAdapter adapter; private ListView lv_list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<UserInfo> userInfos = new ArrayList<UserInfo>(); for (int i = 0; i < 2; i++) { UserInfo user = new UserInfo(); user.setUsername("张三" + i); user.setPhonenum("12345" + i); userInfos.add(user); } for (int i = 0; i < 2; i++) { UserInfo user = new UserInfo(); user.setUsername("李四" + i); user.setPhonenum("12345" + i); userInfos.add(user); } lv_list = (ListView) findViewById(R.id.lv_list); adapter = new UserAdapter(MainActivity.this, userInfos); lv_list.setAdapter(adapter); et_filter = (EditText) findViewById(R.id.et_filter); et_filter.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { adapter.getFilter().filter(et_filter.getText().toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } }
--结束END--
本文标题: edittext + listview 实现搜索listview中的内容方法(推荐)
本文链接: https://www.lsjlt.com/news/224331.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0