Android 自定义适配器过滤器正常但 ListView 未更新

标签 android listview android-listview

我有一个自定义适配器,它显示电话列表中的联系人和对应的按钮。正如标题所说,过滤器工作正常(列表计数更改)但 ListView 保留相同的数据,如果计数为 3, ListView 显示前 3 个条目。

适配器类:

     public class UserCustomAdapter extends ArrayAdapter<User> {
     Context context;
     int layoutResourceId;
     ArrayList<User> data = new ArrayList<User>();

    public UserCustomAdapter(Context context, int layoutResourceId,
    ArrayList<User> data) {
      super(context, layoutResourceId, data);
      this.layoutResourceId = layoutResourceId;
      this.context = context;
      this.data = data;
    }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    UserHolder holder = null;

 if (row == null) {
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    row = inflater.inflate(layoutResourceId, parent, false);
    holder = new UserHolder();
    holder.textName = (TextView) row.findViewById(R.id.textView1);
    holder.number = (TextView) row.findViewById(R.id.textView2);
    holder.textLocation = (TextView) row.findViewById(R.id.textView3);
    holder.btnEdit = (Button) row.findViewById(R.id.Share);
    holder.btnInvite = (Button) row.findViewById(R.id.button2);
    row.setTag(holder);
 } else {
    holder = (UserHolder) row.getTag();
 }
  final User user = data.get(position);
  holder.textName.setText(user.getName());
  holder.number.setText(user.getNumber());
  holder.textLocation.setText(user.getLocation());

  if(user.isMember())
     holder.btnInvite.setVisibility(View.INVISIBLE);


  return row;
}

用户类是

public class User {
     String name;
     String number;
     String location;
     boolean member;
  @Override
    public final String toString(){
     Log.e("Sent to filter", name);
      return name;
     }
+plus all getters and setters
}

最佳答案

你应该使用

final User user = getItem(position);

代替

final User user = data.get(position);

因为您依赖于ArrayAdapterFilter 实现。

关于Android 自定义适配器过滤器正常但 ListView 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294856/

相关文章:

android - 具有 visibility=gone 元素的膨胀布局的性能影响

android - 创建函数以使用 DatePickerDialog 和 TimePickerDiaglog 来捕获用户输入的日期时间

java - 如何使用 valgrind 查找 Android 应用程序的内存泄漏

java - Android - 如何以编程方式使我的应用程序默认短信应用程序

android - 自定义 ListView 项目中的 View 没有应用主题

android - 无法使用自定义适配器在 ListView 中设置项目边距

android - Intent.FLAG_ACTIVITY_CLEAR_TOP 即使应用程序在后台也会导致 Activity 弹出?

android - 删除项目后如何更新列表?

android - 谁能在xamarin.android中解决我的ListView问题?

Android Build 从右向左滑动 ListView 项目显示删除按钮(覆盖在 ListView 项目上)