package com.withiter.quhao.activity; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ListView; import android.widget.Toast; import com.amap.api.location.AMapLocation; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.withiter.quhao.QHClientApplication; import com.withiter.quhao.R; import com.withiter.quhao.adapter.MerchantAdapter; import com.withiter.quhao.task.MyAttentionListTask; import com.withiter.quhao.util.ActivityUtil; import com.withiter.quhao.util.tool.ParseJson; import com.withiter.quhao.view.refresh.PullToRefreshView; import com.withiter.quhao.view.refresh.PullToRefreshView.OnFooterRefreshListener; import com.withiter.quhao.view.refresh.PullToRefreshView.OnHeaderRefreshListener; import com.withiter.quhao.vo.Merchant; /** * 商家列表页面 */ public class MyAttentionListActivity extends QuhaoBaseActivity implements OnHeaderRefreshListener,OnFooterRefreshListener{ protected ListView merchantsListView; private List<Merchant> merchants; private MerchantAdapter merchantAdapter; private final int UNLOCK_CLICK = 1000; private boolean isFirst = true; private boolean needToLoad = true; public static boolean backClicked = false; private PullToRefreshView mPullToRefreshView; private AMapLocation firstLocation = null; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.my_attention_list_layout); super.onCreate(savedInstanceState); this.merchants = new ArrayList<Merchant>(); btnBack.setOnClickListener(goBack(this, this.getClass().getName())); merchantsListView = (ListView) findViewById(R.id.merchantsListView); merchantsListView.setNextFocusDownId(R.id.merchantsListView); merchantsListView.setVisibility(View.GONE); merchantsListView.setOnItemClickListener(merchantItemClickListener); mPullToRefreshView = (PullToRefreshView) this.findViewById(R.id.main_pull_refresh_view); mPullToRefreshView.setOnHeaderRefreshListener(this); mPullToRefreshView.setOnFooterRefreshListener(this); findViewById(R.id.loadingbar).setVisibility(View.VISIBLE); findViewById(R.id.serverdata).setVisibility(View.GONE); } private Handler merchantsUpdateHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 200) { super.handleMessage(msg); LinearLayout.LayoutParams merchantsParams = (LayoutParams) merchantsListView.getLayoutParams(); // 设置自定义的layout merchantsListView.setLayoutParams(merchantsParams); merchantsListView.invalidate(); merchantsListView.setVisibility(View.VISIBLE); // 默认isFirst是true. if (isFirst) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.no_logo) .showImageForEmptyUri(R.drawable.no_logo) .showImageOnFail(R.drawable.no_logo) .cacheInMemory(true) .cacheOnDisk(true) .considerExifParams(true) .displayer(new RoundedBitmapDisplayer(20)) .build(); merchantAdapter = new MerchantAdapter(MyAttentionListActivity.this, merchantsListView, merchants,options,animateFirstListener); merchantsListView.setAdapter(merchantAdapter); isFirst = false; } else { merchantAdapter.merchants = merchants; } merchantAdapter.notifyDataSetChanged(); findViewById(R.id.loadingbar).setVisibility(View.GONE); findViewById(R.id.serverdata).setVisibility(View.VISIBLE); if (null == merchants ||merchants.isEmpty()) { Toast.makeText(MyAttentionListActivity.this, R.string.no_result_4_my_attention, Toast.LENGTH_SHORT).show(); } mPullToRefreshView.onHeaderRefreshComplete(); mPullToRefreshView.onFooterRefreshComplete(); if (!needToLoad) { mPullToRefreshView.setEnableFooterView(false); } else { mPullToRefreshView.setEnableFooterView(true); } unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 1000); } } }; private AdapterView.OnItemClickListener merchantItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Merchant merchant = merchants.get(position); Intent intent = new Intent(); intent.putExtra("merchantId", merchant.id); intent.setClass(MyAttentionListActivity.this, MerchantDetailActivity.class); startActivity(intent); } }; private void getMerchants() { if (!ActivityUtil.isNetWorkAvailable(this)) { Toast.makeText(this, R.string.network_error_info, Toast.LENGTH_SHORT).show(); return; } firstLocation = QHClientApplication.getInstance().location; String url = "app/marked?aid=" + QHClientApplication.getInstance().accountInfo.accountId; if(firstLocation!=null) { url = url + "&userX=" + firstLocation.getLongitude() + "&userY=" + firstLocation.getLatitude(); } else { url = url + "&userX=0.000000&userY=0.000000"; } final MyAttentionListTask task = new MyAttentionListTask(0, this, url); task.execute(new Runnable() { @Override public void run() { String buf = task.result; if (null == merchants) { merchants = new ArrayList<Merchant>(); } List<Merchant> mers = ParseJson.getMerchants(buf); if(mers.size()<10) { needToLoad = false; } //没有分页, 所以暂时为false needToLoad = false; merchants.addAll(mers); merchantsUpdateHandler.obtainMessage(200, merchants).sendToTarget(); } }, new Runnable() { @Override public void run() { if (null == merchants) { merchants = new ArrayList<Merchant>(); } merchantsUpdateHandler.obtainMessage(200, merchants).sendToTarget(); unlockHandler.sendEmptyMessageDelayed(UNLOCK_CLICK, 1000); needToLoad = false; } }); } @Override public void onClick(View v) { } @Override public boolean onTouch(View v, MotionEvent event) { return false; } @Override protected void onResume() { backClicked = false; super.onResume(); isFirst = true; needToLoad = true; merchants = new ArrayList<Merchant>(); getMerchants(); } @Override public void onStop() { super.onStop(); } @Override public void onPause() { super.onPause(); } @Override public void onFooterRefresh(PullToRefreshView view) { mPullToRefreshView.postDelayed(new Runnable() { @Override public void run() { getMerchants(); } }, 1000); } @Override public void onHeaderRefresh(PullToRefreshView view) { mPullToRefreshView.postDelayed(new Runnable() { @Override public void run() { isFirst = true; needToLoad = true; // merchantsListView.setSelectionFromTop(0, 0);// 滑动到第一项 MyAttentionListActivity.this.merchants = new ArrayList<Merchant>(); isFirst = true; needToLoad = true; getMerchants(); } }, 1000); } }