91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ListView與RecyclerView列表項搜索高亮

發布時間:2024-08-15 15:13:32 來源:億速云 閱讀:89 作者:小樊 欄目:移動開發

要實現ListView或RecyclerView列表項搜索高亮效果,可以通過以下步驟實現:

  1. 創建一個用于顯示列表項的布局文件,其中包含一個TextView用于顯示列表項的內容。

  2. 創建一個自定義Adapter類,繼承自BaseAdapter(對應ListView)或RecyclerView.Adapter(對應RecyclerView),并在getView方法中設置TextView的文本內容。

  3. 在Adapter類中添加一個方法用于設置搜索關鍵字,并在getView方法中根據搜索關鍵字對TextView的文本進行高亮處理。

  4. 在Activity或Fragment中實現搜索功能,獲取用戶輸入的搜索關鍵字,并調用Adapter的設置搜索關鍵字的方法,并刷新列表。

下面是一個簡單的示例代碼:

public class MyAdapter extends BaseAdapter {

    private Context mContext;
    private List<String> mData;
    private String mSearchKeyword;

    public MyAdapter(Context context, List<String> data) {
        mContext = context;
        mData = data;
    }

    public void setSearchKeyword(String keyword) {
        mSearchKeyword = keyword;
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
        }

        TextView textView = convertView.findViewById(R.id.text_view);
        String item = mData.get(position);

        if (mSearchKeyword != null && !mSearchKeyword.isEmpty()) {
            SpannableString spannableString = new SpannableString(item);
            int startIndex = item.toLowerCase().indexOf(mSearchKeyword.toLowerCase());
            int endIndex = startIndex + mSearchKeyword.length();
            if (startIndex >= 0) {
                spannableString.setSpan(new ForegroundColorSpan(Color.RED), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
            textView.setText(spannableString);
        } else {
            textView.setText(item);
        }

        return convertView;
    }
}

在Activity或Fragment中,可以使用EditText監聽用戶輸入的搜索關鍵字,并調用Adapter的setSearchKeyword方法,然后通過調用notifyDataSetChanged方法刷新列表項:

EditText searchEditText = findViewById(R.id.search_edit_text);
ListView listView = findViewById(R.id.list_view);
MyAdapter adapter = new MyAdapter(this, dataList);
listView.setAdapter(adapter);

searchEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        adapter.setSearchKeyword(s.toString());
        adapter.notifyDataSetChanged();
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});

以上是一個簡單的實現方式,實際應用中可以根據具體需求和性能要求進一步優化。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常熟市| 太保市| 鲁甸县| 五莲县| 四会市| 汾西县| 上思县| 奉化市| 文水县| 乌鲁木齐市| 平乐县| 金寨县| 米林县| 宁化县| 湘西| 莆田市| 西藏| 大余县| 临夏市| 乐陵市| 安化县| 木里| 兰西县| 平塘县| 囊谦县| 朔州市| 兴国县| 虹口区| 颍上县| 阿鲁科尔沁旗| 安顺市| 汶川县| 南华县| 会理县| 江津市| 阳西县| 尼木县| 东明县| 辽中县| 沙雅县| 绍兴市|