我正在使用自定义 ArrayAdapter来存储用户信息,例如 sammy、robert、lizie 都是一个用户对象,我正在使用用户类型ArrayList将所有用户对象存储到ArrayList。
而且因为它不是字符串或 int(ArrayList),所以默认的getFilter不起作用,我已经完成了我的研究,但是getFilter方法的工作原理确实令人困惑,所以我可以修改自己。
我想实现基于 name属性形式的搜索User class
我知道我必须在我的CustomAdapter类中实现Filterable接口,但是getFilter真的不直观。
这是我的自定义适配器
class CustomArrayAdapter extends ArrayAdapter<User> implements Filterable {
CustomArrayAdapter(@NonNull Context context, ArrayList<User> users) {
super(context, 0, users);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
User innserUser = getItem(position);
if (convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_layout, parent, false);
}
TextView username = (TextView) convertView.findViewById(R.id.userNameContact);
TextView userNumber = (TextView) convertView.findViewById(R.id.userNumberContact);
ImageView userImage = (ImageView) convertView.findViewById(R.id.userImageContact);
try {
if(innserUser != null) {
username.setText(innserUser.name);
userNumber.setText(innserUser.number);
userImage.setImageBitmap(innserUser.imageBitmap);
}
}catch (Exception e){
e.printStackTrace();
}
return convertView;
}
}
这是用户类,这里没什么特别的
import android.graphics.Bitmap;
public class User {
String id, name, number;
Bitmap imageBitmap;
User(String id, String name, String number, Bitmap imageBitmap){
this.id = id;
this.name = name;
this.number = number;
this.imageBitmap = imageBitmap;
}
}
我从许多线程中绑定了许多getFilter的变体,但它们都不适合我,而有很好解释的是 BaseAdapter 而不是 ArrayAdapter
我试过这个问题,我也试过这个问题,但对我不起作用。
我是 android 开发领域的新手,这似乎特别不直观。任何建议将不胜感激,谢谢。
侃侃尔雅
MMTTMM
相关分类