package com.threeH.MyExhibition.ui; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.*; import com.google.gson.Gson; import com.threeH.MyExhibition.R; import com.threeH.MyExhibition.adapters.ExhibitionListAdapter; import com.threeH.MyExhibition.entities.Exhibition; import com.threeH.MyExhibition.entities.ExhibitionList; import com.threeH.MyExhibition.widget.XListView; import java.util.ArrayList; import java.util.List; /** * Created with IntelliJ IDEA. * User: pjq * Date: 13-7-29 * Time: 下午3:49 * To change this template use File | Settings | File Templates. */ public class RecommondActivity extends BaseActivity implements ActivityInterface, AdapterView.OnItemClickListener,XListView.IXListViewListener { private XListView mLvi; private ExhibitionListAdapter mAdapter; private ExhibitionList mJsonData; private LoadAsyncTask mLoadAsyncTask; private long mOrderNo = -1; private static final int SIZE = 5; private List<Exhibition> mData = new ArrayList<Exhibition>(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if(1 == msg.what){ mAdapter = new ExhibitionListAdapter(context,mData,token); mLvi.setAdapter(mAdapter); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentViewWithNoTitle(R.layout.signup_exhibition_page); findView(); initdata(); addAction(); } @Override protected void onDestroy() { mLoadAsyncTask = null; super.onDestroy(); } @Override public void findView() { mLvi = (XListView) this.findViewById(R.id.signup_exhi_listview); } @Override public void initdata() { mLoadAsyncTask = new LoadAsyncTask(); mLoadAsyncTask.execute(); } @Override public void addAction() { mLvi.setOnItemClickListener(this); mLvi.setPullLoadEnable(true); mLvi.setXListViewListener(this); } /** * 读取最后一条展会在后台的排序顺序 * @param jsonData */ private void setOrderNo(ExhibitionList jsonData) { int last = jsonData.getList().size() - 1; if(last >= 0){ mOrderNo = jsonData.getList().get(last).getOrderNo(); } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(this,ExhibitionActivity.class); intent.putExtra("token",token); intent.putExtra("exhibition",mData.get(position-1)); startActivity(intent); } private void onLoad() { mLvi.stopRefresh(); mLvi.stopLoadMore(); mLvi.setRefreshTime(""); } @Override public void onRefresh() { mHandler.postDelayed(new Runnable() { @Override public void run() { mData.clear(); mOrderNo = -1; initdata(); onLoad(); } }, 2000); } @Override public void onLoadMore() { mHandler.postDelayed(new Runnable() { @Override public void run() { makeListAdapterData(); mAdapter.notifyDataSetChanged(); onLoad(); } }, 2000); } public void makeListAdapterData(){ String str = null; try { str = mController.getService().reommondExhibitionList(token, SIZE, mOrderNo); } catch (Exception e) { e.printStackTrace(); } mJsonData = new Gson().fromJson(str,ExhibitionList.class); setOrderNo(mJsonData); if(null != mJsonData){ for(Exhibition exhibition :mJsonData.getList()){ mData.add(exhibition); } } } /** * 发送handler消息 * @param what 消息标志 */ private void sendHandlerMessage(int what){ Message message = handler.obtainMessage(); message.what = what; handler.sendMessage(message); } class LoadAsyncTask extends AsyncTask<Void,Integer,Integer> { @Override protected Integer doInBackground(Void... voids) { new Thread(new Runnable() { @Override public void run() { try { makeListAdapterData(); sendHandlerMessage(1); } catch (Exception e) { } } }).start(); return null; } } }