Android开发----实现ListView+EditView进行搜索的功能

Android开发----实现ListView+EditView进行搜索的功能

业务功能:
设置一个文本框,输入数据库的信息标题,然后进行查询mysql数据库,以List集合的形式对其进行数据显示,
其中xml布局为:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:padding="10dp"
        android:background="@drawable/search_background">
        <ImageView
            android:id="@+id/info_list_flush" 
            android:layout_width="wrap_content"
			android:layout_alignParentRight="true"
			android:layout_centerVertical="true"
			android:src="@drawable/clear_btn"
			android:layout_height="wrap_content"/>
        <Button
            android:id="@+id/info_list_search" 
			android:background="@color/white"
			android:text="搜索"
			android:layout_toLeftOf="@id/info_list_flush"
			android:layout_width="wrap_content"
			android:layout_centerVertical="true"
			android:layout_marginRight="20dp"
			android:layout_marginLeft="20dp"
			android:onClick="findinformations"
			android:layout_height="wrap_content"
			
			/>
        
        <EditText 
            android:id="@+id/info_etn_search"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@+id/info_list_search"
            android:paddingLeft="20dp"
            android:background="@drawable/info_et_bg"
            android:textColor="@color/white"/>
        </RelativeLayout>
     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:orientation="horizontal">

         <ListView
             android:id="@+id/infolist"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:divider="@color/divider"
             android:dividerHeight="1dp" >
         </ListView>

  </LinearLayout>
</LinearLayout>

其中渲染ListView的元素xml为

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:padding="10dp"> 
    <ImageView 
        android:id="@+id/item_info_id"
        android:layout_width="110dp"
        android:layout_height="60dp"
        android:src="@drawable/beanmilk"
        android:scaleType="fitXY"/>
    <TextView 
        android:id="@+id/item_info_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/item_info_id"
        android:layout_marginTop="1dp"
        android:text="牛奶"
        android:layout_marginLeft="10dp"
        android:textStyle="bold"
        android:textSize="20sp"/>
    <TextView 
        android:id="@+id/item_info_area"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/item_info_title"
        android:layout_alignBottom="@id/item_info_id"
     	android:text="植保"/>
     <TextView 
        android:id="@+id/item_info_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="70dp"
        android:layout_alignLeft="@id/item_info_area"
        android:layout_alignBottom="@id/item_info_id"
     	android:text="时间"/>
    <ImageView
        android:id="@+id/item_info_next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/expand" />

</RelativeLayout>

对应的Activity的文件

private ImageView info_list_flush;
	private ImageView info_list_search;
	private EditText  info_etn_search = null;//输入搜索框
	private ListView  infolist;
	Infomation information;
	private List<Infomation> informations = new ArrayList<Infomation>();
	//查询
	private List<Infomation> informationlist = new ArrayList<Infomation>();

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_info_list);
		
		//info_etn_search = (EditText)findViewById(R.id.info_etn_search);
		}
		info_etn_search = (EditText) findViewById(R.id.info_etn_search);

对应的xml点击按钮事件函数

public void findinformations(View view){

		final String data = info_etn_search.getText().toString();

		
		new Thread() {
			InputStream input = null;//设置输入流
			String result = "";
			@Override
public void run() {
		HttpURLConnection conn;
		try {
			conn = (HttpURLConnection)new URL("http://你的的服务器IP和项目名/androidaction/androidquerydetail.action?title="+data).openConnection();
			conn.setRequestMethod("POST");
			conn.setReadTimeout(3000);//设置读取超时的毫秒数
			conn.setConnectTimeout(3000);//设置连接超时的毫秒数
			
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
			input = conn.getInputStream();//得到连接输入流
			InputStreamReader inputStreamReader = new InputStreamReader(input);
			//为得到JSON数据创建BufferedReader
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
			String inputline = "";
			while((inputline = bufferedReader.readLine()) != null) {
				result = result + inputline+"\n";
			}
			
			//JSON转换为字符串
			JSONArray jsoninfoArray = new JSONArray(result);
			for(int i= 0;i<jsoninfoArray.length();i++) {
				JSONObject jsonObject = (JSONObject) jsoninfoArray.get(i);
				Infomation information = new Infomation();
				information.setArea(jsonObject.getString("area"));
				information.setDate(jsonObject.getString("date"));
				information.setTitle(jsonObject.getString("title"));
				informationlist.add(information);//加入集合
			}
	
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		hand.sendEmptyMessage(1);
		
		//System.out.println("数据库拿到的信息"+infoJSON.toString());
	}
}.start();
	
	}

其中在主线程执行的Handler类

	 
	 Handler hand=new Handler(){
	        @Override
	        public void handleMessage(Message msg) {

	            if(msg.what == 1)
	            {
	                ListView infolist = (ListView) findViewById(R.id.infolist);

	                SearchAdapter adapter = new SearchAdapter(informationlist, InfoListActivity.this);
	                infolist.setAdapter(adapter);
	                //startActivity(new Intent( getApplicationContext(),  StuInfoActivity.class ) );
	            }
	            else
	            {
	                Toast.makeText(getApplicationContext(),"查询错误",Toast.LENGTH_LONG).show();
	            }
	        }

	    };

对应的Adater适配器

package com.example.agriculture_expert_app.adapter;

import java.util.List;

import com.example.agriculture_expert_app.R;
import com.example.agriculture_expert_app.bean.Infomation;

import android.content.Context;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
//搜素按钮Adapter适配器
public class SearchAdapter extends BaseAdapter {

	private List<Infomation> informations ;

	private Context context;
	//配置适配器的构造函数
	public SearchAdapter(List<Infomation> informations, Context context) {
		super();
		this.informations = informations;
		this.context = context;
	}
	


	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return informations.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		if(convertView == null) {
			convertView = LayoutInflater.from(context).inflate(R.layout.iteminfo_list, parent, false);
		}
		TextView item_info_title = (TextView)convertView.findViewById(R.id.item_info_title);
		 item_info_title.setText(informations.get(position).getTitle());
		//得到领域
		TextView item_info_area = (TextView)convertView.findViewById(R.id.item_info_area);
		item_info_area.setText(informations.get(position).getArea());
		//得到日期
		TextView item_info_date = (TextView)convertView.findViewById(R.id.item_info_date);
		item_info_date.setText(informations.get(position).getDate());
		 //Infomation infor= informations.get(position);

        return convertView;
	}

}

对应的后端服务器接口
这里使用的是Spring+SpringMVC+Mybatis+MySQL进行设计

	//安卓查询数据库资讯
	@RequestMapping("androidquerydetail")
	@ResponseBody
	public  void  androidquerydetail(HttpServletResponse response,HttpServletRequest request) throws IOException{
		
		response.setCharacterEncoding("utf-8");
		String title = request.getParameter("title");
		
		System.out.println("andoroid拿到的title"+title);
		List<Information> infoLists = this.informationService.queryInfoByTitle(title);
		
		
		response.setContentType("application/x-json");
		
		PrintWriter out = response.getWriter();
		JSONArray jsonArray = JSONArray.fromObject(infoLists);//设置存放数据
		System.out.print(jsonArray.toString());
		out.print(jsonArray);
		//清除缓存
		out.flush();
		//关闭
		out.close();
		
	}

加上查询数据库进行返回输出流进行设计实现

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值