android 自定义ListView.实现机票查询

自定义Adapter

public class TicketListViewAdapter extends BaseAdapter {
	private Context context;
	private List<Map<String, Object>> listItems;
	private LayoutInflater listContainer;
	private DetailListener detailListener;
	final int selectID = 0;

	public interface DetailListener {
		public void OnDeatil(int position);
	}

	public void SetDetailListener(DetailListener listener) {
		detailListener = listener;
	}

	public final class ListItemView {
		public TextView beginTime;
		public TextView endTime;
		public TextView company;
		public TextView origintext;
		public TextView pricetext;
	}

	/**
	 * 
	 * @param context
	 * @param listItems
	 * @param removeFragment
	 * @param removeTag
	 */
	public TicketListViewAdapter(Context context,
			List<Map<String, Object>> listItems) {
		this.context = context;
		listContainer = LayoutInflater.from(context);
		this.listItems = listItems;

	}

	/**
	 * ��ʾ��Ʒ����
	 * 
	 * @param clickID
	 */
	private void showDetailInfo(int clickID) {
		detailListener.OnDeatil(clickID);
	}

	/**
	 * ListView Item����
	 */
	public View getView(int position, View convertView, ViewGroup parent) {
		final int selectID = position;
		ListItemView listItemView = null;
		if (convertView == null) {
			listItemView = new ListItemView();
			convertView = listContainer
					.inflate(R.layout.ticket_list_item, null);
			listItemView.beginTime = (TextView) convertView
					.findViewById(R.id.beginTime);
			listItemView.endTime = (TextView) convertView
					.findViewById(R.id.endtime);
			listItemView.company = (TextView) convertView
					.findViewById(R.id.company);
			listItemView.origintext = (TextView) convertView
					.findViewById(R.id.origintext);
			listItemView.pricetext = (TextView) convertView
					.findViewById(R.id.pricetext);
			convertView.setTag(listItemView);
		} else {
			listItemView = (ListItemView) convertView.getTag();
		}
		listItemView.beginTime.setText((String) listItems.get(position).get(
				"beginTime"));
		listItemView.endTime.setText((String) listItems.get(position).get(
				"endTime"));
		listItemView.company.setText((String) listItems.get(position).get(
				"company"));
		listItemView.origintext.setText((String) listItems.get(position).get(
				"origintext")
				+ " → " + (String) listItems.get(position).get("finishing"));

		listItemView.pricetext.setText((String) listItems.get(position).get(
				"pricetext"));
		LinearLayout layout = (LinearLayout) convertView
				.findViewById(R.id.layoutId);
		layout.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showDetailInfo(selectID);
			}
		});
		return convertView;
	}

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

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return listItems.get(arg0);
	}

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

}

xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutId"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/company"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="东方航空 MU3934"
            android:textColor="#939393"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/pricetext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="5px"
            android:text="¥779"
            android:textColor="#FF7F00" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/beginTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="09:15"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/origintext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:textColor="#FE6D02" 
            android:text="太原武宿机场  → 海虹桥机场"
            android:textSize="16sp" />
    </RelativeLayout>
	<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/endtime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="12:15"
            android:textColor="#27408B"
            android:textSize="13sp" />
    </RelativeLayout>

</LinearLayout>

public class TicketListViewFragment extends Fragment {
	private String headTextString;
	private ListView listView = null;
	private Button returnBtn = null;
	private TextView headText = null;
	private TicketListViewAdapter listViewAdapter = null;
	private List<Map<String, Object>> listItems = null;
	private Fragment fragment = this;
	private View view = null;
	private String fromCity;
	private String toCity;
	private String dayText;

	public interface TicketListListener {
		public void OnBackout();

		public void OnSelectItem(int position);
	}

	private TicketListListener ticketListListener;

	public void SetListListener(TicketListListener listener) {
		ticketListListener = listener;
	}

	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		ArrayList list = getArguments().getParcelableArrayList("list_source");
		this.listItems = (List<Map<String, Object>>) list.get(0);
		this.headTextString = getArguments().getString("head_text");
		dayText = getArguments().getString("dayText");
		fromCity = getArguments().getString("fromcity");
		toCity = getArguments().getString("tocity");
		view = inflater.inflate(R.layout.ticket_listview_control, container,
				false);// fragment_nearby_merchant
		final TextView daysText = (TextView) view.findViewById(R.id.daysText);
		daysText.setText(dayText);
		headText = (TextView) view.findViewById(R.id.headItem);// 标题

		headText.setText(headTextString);
		// 返回
		returnBtn = (Button) view.findViewById(R.id.returnBtn);// 返回按钮
		returnBtn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (ticketListListener != null) {
					ticketListListener.OnBackout();
				}
			}
		});
		listView = (ListView) view.findViewById(R.id.list_ticket);
		listViewAdapter = new TicketListViewAdapter(view.getContext(),
				listItems);
		listViewAdapter
				.SetDetailListener(new TicketListViewAdapter.DetailListener() {

					@Override
					public void OnDeatil(int position) {
						// TODO Auto-generated method stub
						if (ticketListListener != null) {
							ticketListListener.OnSelectItem(position);
						}
					}

				});
		Button yesterday = (Button) view.findViewById(R.id.yesterday);
		yesterday.setOnClickListener(new Button.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				dayText = ChString.getYesterday(dayText);
				getTicketInfo(dayText);
				Log.v("yesString", dayText);
				daysText.setText(dayText);
				listViewAdapter.notifyDataSetChanged();
			}
		});
		Button tomorrow = (Button) view.findViewById(R.id.tomorrow);
		tomorrow.setOnClickListener(new Button.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub

				dayText = ChString.getTomorrow(dayText);
				daysText.setText(dayText);
				getTicketInfo(dayText);
				Log.v("yesString", dayText);
				listViewAdapter.notifyDataSetChanged();
			}
		});
		listView.setAdapter(listViewAdapter);
		return view;
	}

	/**
	 * 获取机票信息
	 */
	private void getTicketInfo(String fromdate) {
		listItems = new ArrayList<Map<String, Object>>();
		HttpPostHandler login_handler = new HttpPostHandler(getActivity(),
				this.getFragmentManager(), "获取机票信息", "获取机票信息,请稍候...", false);
		login_handler.SetResponseListener(new ResponseListener() {

			@Override
			public void OnResponseSuccess(Object data) {
				try {
					JSONArray jsonArray = (JSONArray) data;
					String[] dataStrArray = new String[jsonArray.length()];
					for (int i = 0; i < jsonArray.length(); i++) {
						Map<String, Object> map = new HashMap<String, Object>();
						JSONObject o = (JSONObject) jsonArray.get(i);
						map.put("beginTime", o.getString("departureTime"));
						map.put("endTime", o.getString("arrivalTime"));
						map.put("company",
								o.getString("company") + o.getString("carrier")
										+ o.getString("aircraft"));
						map.put("origintext", o.getString("fromFly") + "机场");
						map.put("finishing", o.getString("toFly") + "机场");
						map.put("pricetext", "¥" + o.getString("yClassPrice"));
						map.put("discount", "");
						dataStrArray[i] = o.toString();
						listItems.add(map);
					}

				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
				}

			}

			@Override
			public void OnResponseFail(String msg) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(getActivity()).setTitle("提示信息")
						.setMessage(msg).setPositiveButton("确定", null).show();
			}
		});
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
		nameValuePairs.add(new BasicNameValuePair("fromcity", fromCity));
		nameValuePairs.add(new BasicNameValuePair("tocity", toCity));
		nameValuePairs.add(new BasicNameValuePair("fromdate", fromdate));
		nameValuePairs.add(new BasicNameValuePair("isPriceAll", "0"));
		ThreadPoolUtils.execute(new HttpPostRunnable(PostUrl.GetAirTicket, "",
				nameValuePairs, login_handler));
	}
}

<ListView
        android:id="@+id/list_ticket"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值