android 搜索框 添加事件

image.png

為listView 添加點擊事件:

 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   //xxxxxxxxxxxxx
            }
        });

這邊會有問題 通過position獲取數(shù)據(jù)時期犬,由于 搜索框的過濾條件 整個position的范圍實際是縮小過了 很難通過position獲取選中的值

這邊通過適配器獲取選中的值

 
 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   String item = (String)arrayAdapter.getItem(position);
                   //將值填到對應(yīng)的控件去
                   //TextView.setText(item);
                   dialog.dismiss();
            }
        });

數(shù)據(jù)只是簡單的String,如果要實現(xiàn)ListView更復(fù)雜的功能。
這邊需要自定義適配器:
適配器需要重寫 過濾方法 新建MyFilter 重寫 過濾方法

public class SelectMultiChoicelAdapter extends ArrayAdapter<AffirmInfoBean.DataBean.UserListBean> {
        private Context mContext;
        private int mResource;
        private List<AffirmInfoBean.DataBean.UserListBean> mData;
        private MyFilter mFilter;
        ArrayList<AffirmInfoBean.DataBean.UserListBean> mOriginalValues;

        public SelectMultiChoicelAdapter(Context context, int resource, List<AffirmInfoBean.DataBean.UserListBean> objects) {
            //這里會將object賦值給父類的mObjects成員變量级遭,問題的所在
            super(context, resource, objects);
            this.mContext = context;
            this.mResource = resource;
            this.mData = objects;
        }
        @Override
        public int getCount() {
            return mData.size();
        }
        @Nullable
        @Override
        public AffirmInfoBean.DataBean.UserListBean getItem(int position) {
            return mData.get(position);
        }

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

        @NonNull
        @Override
        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            View view;
            if (convertView == null) {
                view = LayoutInflater.from(mContext).inflate(mResource, parent, false);
            } else {
                view = convertView;
            }
            CheckBox checkBox =(CheckBox) view.findViewById(R.id.cb_item);
            TextView text = (TextView) view.findViewById(R.id.tv_item);
            checkBox.setChecked(mData.get(position).getIsChecked());
            text.setText(mData.get(position).getText());
            return view;
        }

        @NonNull
        @Override
        public Filter getFilter() {
            if (mFilter == null) {
                mFilter = new MyFilter();
            }
            return mFilter;
        }

        private class MyFilter extends Filter {

            @Override
            //過濾數(shù)據(jù)
            protected FilterResults performFiltering(CharSequence constraint) {
                String filterString = constraint.toString().toLowerCase();
                FilterResults results = new FilterResults();

                //為null疲憋,表示沒有賦值過,這里的邏輯是mOriginalValues保存原始數(shù)據(jù)凿渊,而mData保存過濾后的數(shù)據(jù)

                if (mOriginalValues == null) {
                    mOriginalValues = new ArrayList<>(mData);
                }

                if (TextUtils.isEmpty(filterString)) {
                    results.values = mOriginalValues;
                    results.count = mOriginalValues.size();
                } else {
                    List<AffirmInfoBean.DataBean.UserListBean> values = new ArrayList<>(mOriginalValues);
                    List<AffirmInfoBean.DataBean.UserListBean> newValues = new ArrayList<>();

                    for (int i = 0; i < values.size(); i++) {
                        AffirmInfoBean.DataBean.UserListBean value = values.get(i);
                        if (value.getText().contains(filterString)) {
                            newValues.add(value);
                        }
                    }
                    results.values = newValues;
                    results.count = newValues.size();
                }
                return results;
            }

            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                //mData.clear();
                //mData.addAll((List<String>)results.values);
                //noinspection unchecked
                mData = (List<AffirmInfoBean.DataBean.UserListBean>) results.values;
                if (results.count > 0) {
                    notifyDataSetChanged();
                } else {
                    notifyDataSetInvalidated();
                }
            }
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缚柳,隨后出現(xiàn)的幾起案子埃脏,更是在濱河造成了極大的恐慌,老刑警劉巖秋忙,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彩掐,死亡現(xiàn)場離奇詭異,居然都是意外死亡灰追,警方通過查閱死者的電腦和手機堵幽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弹澎,“玉大人朴下,你說我怎么就攤上這事】噍铮” “怎么了殴胧?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佩迟。 經(jīng)常有香客問我团滥,道長,這世上最難降的妖魔是什么报强? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任灸姊,我火速辦了婚禮,結(jié)果婚禮上秉溉,老公的妹妹穿的比我還像新娘力惯。我一直安慰自己,他們只是感情好坚嗜,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布夯膀。 她就那樣靜靜地躺著,像睡著了一般苍蔬。 火紅的嫁衣襯著肌膚如雪诱建。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天碟绑,我揣著相機與錄音俺猿,去河邊找鬼茎匠。 笑死,一個胖子當著我的面吹牛押袍,可吹牛的內(nèi)容都是我干的诵冒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼谊惭,長吁一口氣:“原來是場噩夢啊……” “哼汽馋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圈盔,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤豹芯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驱敲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铁蹈,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年众眨,在試婚紗的時候發(fā)現(xiàn)自己被綠了握牧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡娩梨,死狀恐怖沿腰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狈定,我是刑警寧澤矫俺,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站掸冤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏友雳。R本人自食惡果不足惜稿湿,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望押赊。 院中可真熱鬧饺藤,春花似錦、人聲如沸流礁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽神帅。三九已至再姑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間找御,已是汗流浹背元镀。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工绍填, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栖疑。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓讨永,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遇革。 傳聞我的和親對象是個殘疾皇子卿闹,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,336評論 25 707
  • 一、上節(jié)回顧: (一)萝快、三大表單控件中需要記憶的核心方法: 1锻霎、RadioButton: RadioGroup類中...
    白話徐文濤閱讀 2,144評論 1 7
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,953評論 2 89
  • 暖風吹,鳥兒鳴杠巡,大地回暖露新容量窘。 柳條綠,披綠衣氢拥,隨風擺動迎春歸蚌铜。 艷花紅,顯媚姿嫩海,似展妖嬈與風爭冬殃。 冰河開,魚兒...
    佛緣亭閱讀 953評論 0 0
  • 什么東西
    黃忠浩閱讀 292評論 0 0