为了账号安全,请及时绑定邮箱和手机立即绑定

使用 customlitview 进行 Android 操作栏搜索

使用 customlitview 进行 Android 操作栏搜索

有只小跳蛙 2022-12-15 10:56:49
我是 android 开发的新手。我有使用 Arrayadopter 的自定义列表视图我的所有数据都来自 sqlite 数据库并在此自定义列表视图中显示我如何在我的操作栏上实现搜索功能我尝试了许多其他代码但它在这里不起作用我拜托告诉我是否有经验的开发人员可以帮助我,我非常感谢他提前请告诉我?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

对于您的适配器,您创建了一个名为filter的公共方法,它不是真正的Filter类。我建议使用 2 种不同的方法来使发布的代码正常工作。


方法一:在Activity中,将:adapter.getFilter().filter(newText);改为adapter.filter(newText);。


方法 2:由于您的数据是一个String列表并且 ArrayAdapter 已经是Filterable,所以保留adapter.getFilter().filter(newText);并使适配器像这样简单:


public class ListViewAdapter extends ArrayAdapter {

private MainActivity activity;


public ListViewAdapter(MainActivity context, int resource, List<String> objects) {

    super(context, resource, objects);

    this.activity = context;

}


@Override

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

    // If holder not exist then locate all view from UI file.

    if (convertView == null) {

        // inflate UI from XML file

        convertView = inflater.inflate(R.layout.item_listview, parent, false);

        // get all UI view

        holder = new ViewHolder(convertView);

        // set tag for holder

        convertView.setTag(holder);

    } else {

        // if holder created, get tag from view

        holder = (ViewHolder) convertView.getTag();

    }


    String item = (String)getItem(position);

    holder.friendName.setText(item);

    //get first letter of each String item

    String firstLetter = item.substring(0, 1);

    ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT

    // generate random color

    int color = generator.getColor(item);

    TextDrawable drawable = TextDrawable.builder()

            .buildRound(firstLetter, color); // radius in px

    holder.imageView.setImageDrawable(drawable);

    return convertView;

}


private class ViewHolder {

    private ImageView imageView;

    private TextView friendName;


    public ViewHolder(View v) {

        imageView = (ImageView) v.findViewById(R.id.image_view);

        friendName = (TextView) v.findViewById(R.id.text);

    }

}


}

我在 ListView 上的博客还包含带有过滤器的示例:http: //programandroidlistview.blogspot.com/希望对您有所帮助!


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信