/** * */ package com.keju.maomao.activity.event; import java.util.ArrayList; import java.util.List; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import com.keju.maomao.AsyncImageLoader; import com.keju.maomao.AsyncImageLoader.ImageCallback; import com.keju.maomao.Constants; import com.keju.maomao.R; import com.keju.maomao.SystemException; import com.keju.maomao.activity.bar.BarDetailActivity; import com.keju.maomao.activity.base.BaseActivity; import com.keju.maomao.bean.EventBean; import com.keju.maomao.bean.ResponseBean; import com.keju.maomao.helper.BusinessHelper; import com.keju.maomao.util.NetUtil; /** * 酒吧活动列表 * * @author zhouyong * @data 创建时间:2013-10-31 上午10:46:15 */ public class EventListActivity extends BaseActivity implements OnClickListener { private ImageButton ibLeft; private Button btnRight; private TextView tvTitle; private ListView lvEventList; private EventAdapter adapter; private ArrayList<EventBean> eventList; private List<EventBean> hotList = new ArrayList<EventBean>();// 热门活动 private LinearLayout viewEventList; private int pageIndex = 1; private View vFooter; private ProgressBar pbFooter; private TextView tvFooterMore; private boolean isFilter = false; private boolean isLoad = false;// 是否正在加载数据 private boolean isLoadMore = false; private boolean isComplete = false;// 是否加载完了; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.event_list); findView(); fillData(); } private void findView() { ibLeft = (ImageButton) this.findViewById(R.id.ibLeft); btnRight = (Button) this.findViewById(R.id.btnRight); lvEventList = (ListView) this.findViewById(R.id.lvEventList); tvTitle = (TextView) this.findViewById(R.id.tvTitle); // 加载更多footer vFooter = getLayoutInflater().inflate(R.layout.footer, null); pbFooter = (ProgressBar) vFooter.findViewById(R.id.progressBar); tvFooterMore = (TextView) vFooter.findViewById(R.id.tvMore); // 今日推荐 viewEventList = (LinearLayout) this.findViewById(R.id.viewEventList); } private void fillData() { ibLeft.setOnClickListener(this); ibLeft.setImageResource(R.drawable.ic_btn_left); tvTitle.setText("活动列表"); eventList = new ArrayList<EventBean>(); adapter = new EventAdapter(); lvEventList.addFooterView(vFooter); lvEventList.setAdapter(adapter); lvEventList.setDividerHeight(0); lvEventList.setOnScrollListener(LoadListener); lvEventList.setOnItemClickListener(itemListener); lvEventList.setDivider(null); lvEventList.setFooterDividersEnabled(false); if (NetUtil.checkNet(EventListActivity.this)) { new GetEventListTask().execute(); } else { showShortToast(R.string.NoSignalException); } } @Override public void onClick(View v) { } /** * listview点击事件 */ OnItemClickListener itemListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg2 >= eventList.size()) { return; } EventBean bean = eventList.get(arg2); Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, bean); openActivity(BarDetailActivity.class, b); } }; /** * 滚动监听器 */ OnScrollListener LoadListener = new OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem + visibleItemCount == totalItemCount) { isLoadMore = true; } else { isLoadMore = false; } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 滚动到最后,默认加载下一页 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && isLoadMore) { if (NetUtil.checkNet(EventListActivity.this)) { if (!isLoad && !isComplete) { new GetEventListTask().execute(); } } else { showShortToast(R.string.NoSignalException); } } else { } } }; /** * 获取活动列表 * **/ private class GetEventListTask extends AsyncTask<Void, Void, ResponseBean<EventBean>> { @Override protected void onPreExecute() { super.onPreExecute(); showPd("正在加载..."); } @Override protected ResponseBean<EventBean> doInBackground(Void... params) { try { return new BusinessHelper().getEventList(pageIndex); } catch (SystemException e) { } return null; } @Override protected void onPostExecute(ResponseBean<EventBean> result) { super.onPostExecute(result); dismissPd(); pbFooter.setVisibility(View.GONE); if (isFilter) { eventList.clear(); } if (result.getStatus() != Constants.REQUEST_FAILD) { // 这里获取到十条数据 List<EventBean> tempList = result.getObjList(); if (pageIndex == 1) { hotList.addAll(result.getObjList1()); fillTodayRecommend(result.getObjList1()); } boolean isLastPage = false; if (tempList.size() > 0) { eventList.addAll(tempList); adapter.notifyDataSetChanged(); // 通知更新 pageIndex++; } else { isLastPage = true; } if (isLastPage) { pbFooter.setVisibility(View.GONE); tvFooterMore.setText(R.string.load_all); isComplete = true; } else { if (tempList.size() > 0 && tempList.size() < Constants.PAGE_SIZE) { pbFooter.setVisibility(View.GONE); tvFooterMore.setText(R.string.load_all); isComplete = true; } else { pbFooter.setVisibility(View.GONE); tvFooterMore.setText("上拉查看更多"); } } if ((pageIndex == 1 || pageIndex == 2) && tempList.size() < Constants.PAGE_SIZE) { tvFooterMore.setText(""); } } else { showShortToast(result.getError()); tvFooterMore.setText(""); } adapter.notifyDataSetChanged(); isLoad = false; isFilter = false; } } /** * 填充今日推荐数据 * * @param list * */ private void fillTodayRecommend(final List<EventBean> hotlist) { if (hotlist == null) { return; } for (int i = 0; i < hotlist.size(); i++) { final EventBean bean = hotlist.get(i); LinearLayout.LayoutParams paramItem = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); paramItem.rightMargin = 3;// 图片居上5dp // paramItem.topMargin =2; final View view = getLayoutInflater().inflate(R.layout.today_commened_item, null); view.setLayoutParams(paramItem); ImageView ivPhoto = (ImageView) view.findViewById(R.id.ivPhoto); String picUrl = bean.getRecommendPhotoUrl(); ivPhoto.setTag(picUrl); if (!TextUtils.isEmpty(picUrl)) { Drawable cacheDrawble = AsyncImageLoader.getInstance().loadDrawable(picUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) viewEventList.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { image.setImageDrawable(imageDrawable); } else { image.setImageResource(R.drawable.ic_default); } } } }); if (cacheDrawble != null) { ivPhoto.setImageDrawable(cacheDrawble); } else { ivPhoto.setImageResource(R.drawable.ic_default); } } ivPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, bean); openActivity(BarDetailActivity.class, b); } }); viewEventList.addView(view); } } /** * 适配器 * **/ public class EventAdapter extends BaseAdapter { @Override public int getCount() { return eventList.size(); } @Override public Object getItem(int position) { return eventList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; EventBean bean = eventList.get(position); if (convertView == null) { holder = new ViewHolder(); convertView = getLayoutInflater().inflate(R.layout.event_item, null); holder.tvEventTitle = (TextView) convertView.findViewById(R.id.tvEventTitle); holder.tvDistanceLabel = (TextView) convertView.findViewById(R.id.tvDistanceLabel); holder.tvStartTime = (TextView) convertView.findViewById(R.id.tvStartTime); holder.tvEndTime = (TextView) convertView.findViewById(R.id.tvEndTime); holder.tvJionNum = (TextView) convertView.findViewById(R.id.tvJionNum); holder.ivImage = (ImageView) convertView.findViewById(R.id.ivImage); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } String url = bean.getPhotoUrl(); holder.ivImage.setTag(url); Drawable cacheDrawble = AsyncImageLoader.getInstance().loadDrawable(url, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) lvEventList.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { image.setImageDrawable(imageDrawable); } else { image.setImageResource(R.drawable.ic_default); } } } }); if (cacheDrawble != null) { holder.ivImage.setImageDrawable(cacheDrawble); } else { holder.ivImage.setImageResource(R.drawable.ic_default); } holder.tvEventTitle.setText(bean.getEventTitle()); holder.tvDistanceLabel.setText(bean.getEventAddress()); holder.tvStartTime.setText(bean.getStartTime()); holder.tvEndTime.setText(bean.getEndTime()); holder.tvJionNum.setText(bean.getJoinNumber()); return convertView; } } class ViewHolder { private TextView tvEventTitle, tvDistanceLabel, tvStartTime, tvEndTime, tvJionNum; private ImageView ivImage; } }