搜索功能的Andr​​oid提供在MySQL中获取数据 [英] search function in android for getting data in mysql

查看:107
本文介绍了搜索功能的Andr​​oid提供在MySQL中获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想添加Function.I看到本教程的搜索。我尝试添加code,但仍然有error.Maybe,我不明白适配器。
   公共类orderActivity扩展ListActivity {

  //进度对话框
私人ProgressDialog pDialog;//创建JSON解析器对象
JSONParser jParser =新JSONParser();ArrayList的<&HashMap的LT;字符串,字符串>> ordersList;的EditText inputsearch;
 // 列表显示
 私人的ListView BB;
//列表视图适配器
 ArrayAdapter<串GT;适配器;
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.all_order);
 //获取来自意图产品的详细信息
    意向I = getIntent(); //从意图获取产品ID(PID)
    用户名= i.getStringExtra(KEY_NAME); //为哈希映射的ListView    ordersList =新的ArrayList<&HashMap的LT;字符串,字符串>>();    //在后台线程加载订单
    新LoadAllOrders()执行();    //获取列表视图
    ListView控件LV = getListView();    //在选课单品
    //启动编辑产品屏幕
    lv.setOnItemClickListener(新OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,
                INT位置,长的id){
            //从选定的ListItem得到的值
            字符串OID =((的TextView)view.findViewById(R.id.name))的getText()。
                    的ToString();
                //开始新意图
                在意向=新意图(getApplicationContext()
                        orderdetailActivity.class);
                //发送到PID下一个活动
                in.putExtra(KEY_ID,OID);                //开始新的活动,期待一些回响应
                startActivityForResult(在100);
            }
    });    //搜索功能部件!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!    BB =(ListView控件)findViewById(android.R.id.list);
     inputsearch =(EditText上)findViewById(R.id.inputsearch);
     bb.setAdapter(适配器);
    / **
     *启用搜索过滤器
     * * /
    inputsearch.addTextChangedListener(新TextWatcher(){        @覆盖
        公共无效onTextChanged(CharSequence的CS,INT ARG1,ARG2 INT,INT ARG3){
            //当用户更改文本
            。orderActivity.this.adapter.getFilter()过滤器(CS);
        }        @覆盖
        公共无效beforeTextChanged(CharSequence的为arg0,ARG1 INT,INT ARG2,
                INT ARG3){
            // TODO自动生成方法存根        }        @覆盖
        公共无效afterTextChanged(编辑为arg0){
            // TODO自动生成方法存根
        }
    });}
    / **
     *让所有的URL订单
     * * /
    保护字符串doInBackground(字符串参数... args){
        //从后台线程更新界面
        runOnUiThread(新的Runnable(){
            公共无效的run(){
        尝试{
            //大厦参数
            清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
            params.add(新BasicNameValuePair(用户名的用户名));
            // URL从获取JSON字符串
            JSONObject的JSON = jParser.makeHtt prequest(url_orders,GET,则params);            //检查JSON效应初探日志的猫
            Log.d(所有订单,json.toString());            //检查成功TAG
            INT成功= json.getInt(KE​​Y_SUCCESS);            如果(成功== 1){
                发现//订单
                //获取订单的数组
                订单= json.getJSONArray(KEY_ORDERS);                //通过所有订单循环
                的for(int i = 0; I< orders.length();我++){
                    JSONObject的C = orders.getJSONObject(I)                    //存储在变量中的每个JSON项目
                    字符串ID = c.getString(KEY_ID);
                    字符串名称= c.getString(KEY_USERNAME);                    //创建新的HashMap
                    HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();                    //将每个子节点的HashMap键=>值
                    map.put(KEY_ID,身份证);
                    map.put(KEY_USERNAME,名);                    //添加HashList到ArrayList的
                    ordersList.add(地图);
                }
            }其他{
                //没有发现订单
                //启动添加新产品活动
                意图I =新意图(getApplicationContext()
                        orderActivity.class); //没有保证需要改变
                //关闭所有previous活动
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(ⅰ);
            }
        }赶上(JSONException E){
            e.printStackTrace();
        }            }
        });        返回null;
    }    / **
     *在完成后台任务之后辞退进度对话框
     * ** /
    保护无效onPostExecute(字符串FILE_URL){
        //让所有订单后,关闭该对话框
        pDialog.dismiss();
        //从后台线程更新界面
        runOnUiThread(新的Runnable(){
            公共无效的run(){
                / **
                 *更新解析JSON数据到ListView控件
                 * * /
                ListAdapter适配器=新SimpleAdapter(
                        orderActivity.this,ordersList,
                        R.layout.all_list,新的String [] {KEY_USERNAME,
                                KEY_ID},
                        新的INT [] {R.id.oid,R.id.name});
                //更新列表视图
                setListAdapter(适配器);
            }
        });    }}

}

有布局。

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直><! - 产品ID(PID) - 会被隐藏 - 用于传递给其他活动 - >
<的TextView
    机器人:ID =@ + ID / OID
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT
    机器人:知名度=水涨船高/><! - 名称标签 - >
<的TextView
    机器人:ID =@ + ID /名称
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT
    机器人:paddingTop =6DIP
    机器人:paddingLeft =6DIP
    机器人:TEXTSIZE =17dip
    机器人:文字样式=大胆/>< / LinearLayout中>

有其它布局
    
    

 <的TextView
        机器人:ID =@ + ID / textView1
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_gravity =中心
        机器人:layout_marginTop =10dip
        机器人:文字=请输入订单号:
        机器人:TEXTSIZE =20dp/>
 <的EditText
        机器人:ID =@ + ID / inputsearch
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_gravity =CENTER_HORIZONTAL
        机器人:提示=搜索令。
        安卓的inputType =textVisiblePassword
        机器人:EMS =10/>
< - 总是给值id如清单!(@android:ID /列表) - GT;
< ListView控件
    机器人:ID =@机器人:ID /列表
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT/>< / LinearLayout中>

这是我的日志

  9月3日至一十二日:52:00.252:W / dalvikvm(295):主题ID = 1:螺纹未捕获的异常退出(组= 0x4001d800)
9月3日至12日:52:00.261:E / AndroidRuntime(295):致命异常:主要
9月3日至12日:52:00.261:E / AndroidRuntime(295):显示java.lang.NullPointerException
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.example.androidhive.orderActivity $ 2.onTextChanged(orderActivity.java:125)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.widget.TextView.sendOnTextChanged(TextView.java:6131)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.widget.TextView.handleTextChanged(TextView.java:6172)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.widget.TextView $ ChangeWatcher.onTextChanged(TextView.java:6316)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:247)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:73)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.os.Handler.dispatchMessage(Handler.java:99)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.os.Looper.loop(Looper.java:123)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在android.app.ActivityThread.main(ActivityThread.java:4627)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在java.lang.reflect.Method.invokeNative(本机方法)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在java.lang.reflect.Method.invoke(Method.java:521)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
9月3日至12日:52:00.261:E / AndroidRuntime(295):在dalvik.system.NativeStart.main(本机方法)
9月3日至12日:52:02.294:I /流程(295):发送信号。 PID:295 SIG:9


解决方案

请在下载整个项目并运行它。一旦它的工作原理,试着将它拆开来学习的点点滴滴。而且,这是没有办法使用搜索功能为从MySQL中获取数据。

如果你想使用MySQL来实现搜索,你需要有你的表数据。让你的光标适配器上的过滤方法。然后在onTextChanged()监听器,你要查询数据库根据输入哪些用户。

 如。 SELECT * FROM表,其中名称,比如S%; //如果用户已经输入第

i want to add a search Function.I have seen the tutorial. I try to add the code but still have error.Maybe,I don't understand Adapter. public class orderActivity extends ListActivity{

// Progress Dialog
private ProgressDialog pDialog;

// Creating JSON Parser object
JSONParser jParser = new JSONParser();

ArrayList<HashMap<String, String>> ordersList;

EditText inputsearch;
 // List view
 private ListView bb;
// Listview Adapter
 ArrayAdapter<String> adapter;




public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_order);  


 // getting product details from intent
    Intent i = getIntent();

 // getting product id (pid) from intent
    username = i.getStringExtra(KEY_NAME);

 // Hashmap for ListView

    ordersList = new ArrayList<HashMap<String, String>>();

    // Loading orders in Background Thread
    new LoadAllOrders().execute();

    // Get listview
    ListView lv = getListView();

    // on seleting single product
    // launching Edit Product Screen
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String oid = ((TextView) view.findViewById(R.id.name)).getText()
                    .toString();
                // Starting new intent
                Intent in = new Intent(getApplicationContext(),
                        orderdetailActivity.class);
                // sending pid to next activity
                in.putExtra(KEY_ID, oid);

                // starting new activity and expecting some response back
                startActivityForResult(in, 100);
            }
    });

    //the search function part!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    bb = (ListView) findViewById(android.R.id.list);
     inputsearch = (EditText) findViewById(R.id.inputsearch);
     bb.setAdapter(adapter);


    /**
     * Enabling Search Filter
     * */
    inputsearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            orderActivity.this.adapter.getFilter().filter(cs);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });

}


    /**
     * getting All orders from url
     * */
    protected String doInBackground(String... args) {
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {


        try {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("username", username));
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_orders, "GET", params);

            // Check your log cat for JSON reponse
            Log.d("All Orders: ", json.toString());

            // Checking for SUCCESS TAG
            int success = json.getInt(KEY_SUCCESS);

            if (success == 1) {
                // orders found
                // Getting Array of orders
                orders = json.getJSONArray(KEY_ORDERS);

                // looping through All Orders
                for (int i = 0; i < orders.length(); i++) {
                    JSONObject c = orders.getJSONObject(i);

                    // Storing each json item in variable
                    String id = c.getString(KEY_ID);
                    String name = c.getString(KEY_USERNAME);

                    // creating new HashMap
                    HashMap<String, String> map = new    HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(KEY_ID, id);
                    map.put(KEY_USERNAME, name);

                    // adding HashList to ArrayList
                    ordersList.add(map);
                }
            } else {
                // no orders found
                // Launch Add New product Activity
                Intent i = new Intent(getApplicationContext(),
                        orderActivity.class);       //  no ensure to need change
                // Closing all previous activities
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

            }
        });

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all orders
        pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                ListAdapter adapter = new SimpleAdapter(
                        orderActivity.this, ordersList,
                        R.layout.all_list, new String[] { KEY_USERNAME,
                                KEY_ID},
                        new int[] { R.id.oid, R.id.name });
                // updating listview
                setListAdapter(adapter);
            }
        });

    }

}

}

there is the layout.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<!-- Product id (pid) - will be HIDDEN - used to pass to other activity -->
<TextView
    android:id="@+id/oid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

<!-- Name Label -->
<TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="6dip"
    android:paddingLeft="6dip"
    android:textSize="17dip"
    android:textStyle="bold" />

</LinearLayout>

there is the other layout

 <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dip"
        android:text="Please enter the order number:"
        android:textSize="20dp" />
 <EditText
        android:id="@+id/inputsearch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:hint="Search orders.."
        android:inputType="textVisiblePassword"
        android:ems="10" />
<!--  Always give id value as list(@android:id/list)   -->
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

</LinearLayout>

that is my log

03-12 09:52:00.252: W/dalvikvm(295): threadid=1: thread exiting with uncaught exception    (group=0x4001d800)
03-12 09:52:00.261: E/AndroidRuntime(295): FATAL EXCEPTION: main
03-12 09:52:00.261: E/AndroidRuntime(295): java.lang.NullPointerException
03-12 09:52:00.261: E/AndroidRuntime(295):  at   com.example.androidhive.orderActivity$2.onTextChanged(orderActivity.java:125)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.widget.TextView.sendOnTextChanged(TextView.java:6131)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.widget.TextView.handleTextChanged(TextView.java:6172)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6316)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
03-12 09:52:00.261: E/AndroidRuntime(295):  at   android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174)
03-12 09:52:00.261: E/AndroidRuntime(295):  at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120)
03-12 09:52:00.261: E/AndroidRuntime(295):  at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:247)
03-12 09:52:00.261: E/AndroidRuntime(295):  at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:73)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.os.Looper.loop(Looper.java:123)
03-12 09:52:00.261: E/AndroidRuntime(295):  at android.app.ActivityThread.main(ActivityThread.java:4627)
03-12 09:52:00.261: E/AndroidRuntime(295):  at java.lang.reflect.Method.invokeNative(Native Method)
03-12 09:52:00.261: E/AndroidRuntime(295):  at java.lang.reflect.Method.invoke(Method.java:521)
03-12 09:52:00.261: E/AndroidRuntime(295):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-12 09:52:00.261: E/AndroidRuntime(295):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-12 09:52:00.261: E/AndroidRuntime(295):  at dalvik.system.NativeStart.main(Native   Method)
03-12 09:52:02.294: I/Process(295): Sending signal. PID: 295 SIG: 9

解决方案

Please download the project on its entirety and run it. Once it works, try breaking it apart to learn the bits and pieces. And, this is in no way using the search feature for getting data from mysql.

If you wish to implement search using mysql, you need to have your table with its data. Have a filtering method on your cursor adapter. Then on the onTextChanged() listener, you have to query your database according to what user inputted.

eg. select * from table where name like "s%"; // if the user has inputted s. 

这篇关于搜索功能的Andr​​oid提供在MySQL中获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆