自定义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" />