简单的EditText搜索器

由于时间的关系,没有细细总结请见谅
package com.example.yangyinzaixian.Zhuangyerenzheng.Fragmet_view;


import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.yangyinzaixian.R;
import com.example.yangyinzaixian.Zhuangyerenzheng.ADB.Listviewadpter;
import com.example.yangyinzaixian.Zhuangyerenzheng.JavabeanFile.Javabean_er;
import com.google.gson.Gson;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import okhttp3.Call;

import static com.zhy.http.okhttp.log.LoggerInterceptor.TAG;

/**
 * A simple {@link Fragment} subclass.
 */
public class BlankFragment2 extends Fragment implements View.OnClickListener {


    private EditText eSearch;
    private Button btn;
    private ListView mListView;
    private SimpleAdapter adapter;

    private ArrayList<Map<String, Object>> mData = new ArrayList<Map<String, Object>>();
    private ArrayList<String> mListTitle = new ArrayList<String>();
    private ArrayList<String> mListText = new ArrayList<String>();
    private ArrayList<String> name=new ArrayList<>();
    private ArrayList<String> tab=new ArrayList<>();
    Handler myhandler = new Handler();
    private View inflate;


    public BlankFragment2() {
    }
    private String url=" http://api.immedc.com/restapi/szrz/getSearch?minid=0&size=2000";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        inflate = inflater.inflate(R.layout.fragment_blank_fragment2, container, false);
        RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                Gson gson = new Gson();
                Javabean_er javabean_er = gson.fromJson(s, Javabean_er.class);
                List<Javabean_er.DataBean> data = javabean_er.getData();
                for (int i = 0; i < data.size(); i++) {
                    name.add(data.get(i).getName());//mobile
                    tab.add(data.get(i).getMobile()+"");
                }
                initView(inflate);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(getContext(), "没有网络", Toast.LENGTH_SHORT).show();
            }
        });
        requestQueue.add(stringRequest);

        return inflate;
    }

    private void initView(View inflate) {
        eSearch = (EditText) inflate.findViewById(R.id.text);
        btn = (Button) inflate.findViewById(R.id.btn);
        mListView = (ListView) inflate.findViewById(R.id.listview);
        btn.setOnClickListener(this);

        set_ivDeleteText_OnClick();//设置叉叉的监听器

        set_mListView_adapter();//listview控件添加一个adapter


    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn:
                set_eSearch_TextChanged();
                break;
        }
    }


    private void set_eSearch_TextChanged()
    {
        if(eSearch.getText().length() == 0){
//            ivDeleteText.setVisibility(View.GONE);//当文本框为空时,则叉叉消失
        }
        else {
//            ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉叉
        }
        myhandler.post(eChanged);

        //跟据文本框来改变搜索内容
        /*eSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub
                //这个应该是在改变的时候会做的动作吧,具体还没用到过。
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub
                //这是文本框改变之前会执行的动作
            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                *//**这是文本框改变之后 会执行的动作
     * 因为我们要做的就是,在文本框改变的同时,我们的listview的数据也进行相应的变动,并且如一的显示在界面上。
     * 所以这里我们就需要加上数据的修改的动作了。
     *//*
                if(s.length() == 0){
                    ivDeleteText.setVisibility(View.GONE);//当文本框为空时,则叉叉消失
                }
                else {
                    ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉叉
                }
                myhandler.post(eChanged);
            }
        });*/

    }

    Runnable eChanged = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            String data = eSearch.getText().toString();
            mData.clear();//先要清空,不然会叠加
            getmDataSub(mData, data);//获取更新数据
            adapter.notifyDataSetChanged();//更新
        }
    };
    private void getmDataSub(ArrayList<Map<String, Object>> mDataSubs, String data)
    {
        int length = mListTitle.size();
        for(int i = 0; i < length; ++i){
            if(mListTitle.get(i).contains(data) || mListText.get(i).contains(data)){
                Map<String,Object> item = new HashMap<String,Object>();
                item.put("title", mListTitle.get(i));
                item.put("text",  mListText.get(i));
                mDataSubs.add(item);
            }
        }
    }

    private void set_ivDeleteText_OnClick()
    {
    }

    private void getmData(ArrayList<Map<String, Object>> mDatas)
    {
        Map<String, Object> item = new HashMap<String, Object>();
        for (int i = 0; i < name.size(); i++) {
            mListTitle.add(name.get(i).toString());
            mListText.add(tab.get(i).toString());
            item.put("title", mListTitle.get(i));
            item.put("text", mListText.get(i));
            item = new HashMap<String, Object>();
            item.put("title", mListTitle.get(i));
            item.put("text", mListText.get(i));
            mDatas.add(item);
        }
    }
    private void set_mListView_adapter()
    {
        getmData(mData);
        adapter = new SimpleAdapter(getActivity(),mData,android.R.layout.activity_list_item,
                new String[]{"title"},new int[]{android.R.id.text1});
        mListView.setAdapter(adapter);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值