package com.myqsc.mobile2.Notice;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.myqsc.mobile2.R;
import com.myqsc.mobile2.uti.AwesomeFontHelper;
import com.myqsc.mobile2.uti.LogHelper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.MemoryHandler;
/**
* Created by richard on 13-10-8.
*/
public class NoticeHelper {
LinearLayout linearLayout = null;
PullToRefreshScrollView scrollView = null;
Context mContext = null;
LayoutInflater mInflater = null;
int pager = 1;
private View.OnClickListener onCategoryClickListener, onSponsorClickListener;
public NoticeHelper(LinearLayout linearLayout, PullToRefreshScrollView scrollView, Context context){
this.linearLayout = linearLayout;
this.scrollView = scrollView;
this.mContext = context;
this.mInflater = LayoutInflater.from(mContext);
}
public void setOnCategoryClickListener (View.OnClickListener onClickListener) {
this.onCategoryClickListener = onClickListener;
}
public void setOnSponsorClickListener (View.OnClickListener onClickListener) {
this.onSponsorClickListener = onClickListener;
}
public void reset() {
pager = 1;
}
public void getMore(final int type) {
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String url = "http://notice.myqsc.com/";
switch (type) {
case NoticeActivity.SELECT_TINT:
url += "events";
break;
case NoticeActivity.SELECT_FIRE:
url += "events/hot";
break;
}
url += "?page=" + pager;
++pager;
LogHelper.e(url);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("X-Requested-With", "XMLHttpRequest");
httpGet.setHeader("X-Need-Escape", "0");
try {
HttpResponse response = httpClient.execute(httpGet);
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("data");
if (jsonObject.getInt("code") != 0 || jsonArray.length() == 0)
throw new RuntimeException("没有更多活动了");
final List<NoticeStructure> list = new ArrayList<NoticeStructure>();
for (int i = 0; i != jsonArray.length(); ++i) {
list.add(new NoticeStructure(jsonArray.getJSONObject(i)));
}
linearLayout.post(new Runnable() {
@Override
public void run() {
if (pager == 2) {
//说明这是第一次请求,就要把搜索框删掉!
linearLayout.removeAllViews();
}
addView(list);
scrollView.onRefreshComplete();
}
});
} catch (RuntimeException e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "木有更多活动啦!", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
} catch (Exception e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "网络失败,请稍后重试", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
}
}
});
thread.start();
}
public void getSearchResult(final Handler handler, final String key) {
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String url = Uri.parse("http://notice.myqsc.com/events")
.buildUpon()
.appendQueryParameter("page", String.valueOf(pager))
.appendQueryParameter("keyword", key)
.build().toString();
++pager;
LogHelper.e(url);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("X-Requested-With", "XMLHttpRequest");
httpGet.setHeader("X-Need-Escape", "0");
try {
HttpResponse response = httpClient.execute(httpGet);
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("data");
if (jsonObject.getInt("code") != 0 || jsonArray.length() == 0)
throw new RuntimeException("没有更多活动了");
final List<NoticeStructure> list = new ArrayList<NoticeStructure>();
for (int i = 0; i != jsonArray.length(); ++i) {
list.add(new NoticeStructure(jsonArray.getJSONObject(i)));
}
handler.post(new Runnable() {
@Override
public void run() {
if (pager == 2) {
//说明这是第一次请求,就要把搜索框删掉!
linearLayout.removeAllViews();
}
addView(list);
scrollView.onRefreshComplete();
}
});
} catch (RuntimeException e) {
e.printStackTrace();
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "木有更多搜索结果啦!", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
} catch (Exception e) {
e.printStackTrace();
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "网络失败,请稍后重试", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
}
}
});
thread.start();
}
public void getCategoryResult(final int key) {
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String url = Uri.parse("http://notice.myqsc.com/events")
.buildUpon()
.appendQueryParameter("page", String.valueOf(pager))
.appendQueryParameter("category", String.valueOf(key))
.build().toString();
++pager;
LogHelper.e(url);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("X-Requested-With", "XMLHttpRequest");
httpGet.setHeader("X-Need-Escape", "0");
try {
HttpResponse response = httpClient.execute(httpGet);
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("data");
if (jsonObject.getInt("code") != 0 || jsonArray.length() == 0)
throw new RuntimeException("没有更多活动了");
final List<NoticeStructure> list = new ArrayList<NoticeStructure>();
for (int i = 0; i != jsonArray.length(); ++i) {
list.add(new NoticeStructure(jsonArray.getJSONObject(i)));
}
linearLayout.post(new Runnable() {
@Override
public void run() {
if (pager == 2) {
//说明这是第一次请求,就要把搜索框删掉!
linearLayout.removeAllViews();
}
addView(list);
scrollView.onRefreshComplete();
}
});
} catch (RuntimeException e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "木有更多结果啦!", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
} catch (Exception e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "网络失败,请稍后重试", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
}
}
});
thread.start();
}
public void getSponsorResult(final int key) {
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String url = Uri.parse("http://notice.myqsc.com/events")
.buildUpon()
.appendQueryParameter("page", String.valueOf(pager))
.appendQueryParameter("sponsor", String.valueOf(key))
.build().toString();
++pager;
LogHelper.e(url);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("X-Requested-With", "XMLHttpRequest");
httpGet.setHeader("X-Need-Escape", "0");
try {
HttpResponse response = httpClient.execute(httpGet);
String result = EntityUtils.toString(response.getEntity(), "UTF-8");
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("data");
if (jsonObject.getInt("code") == 1 || jsonArray.length() == 0)
throw new RuntimeException("没有更多活动了");
final List<NoticeStructure> list = new ArrayList<NoticeStructure>();
for (int i = 0; i != jsonArray.length(); ++i) {
list.add(new NoticeStructure(jsonArray.getJSONObject(i)));
}
linearLayout.post(new Runnable() {
@Override
public void run() {
if (pager == 2) {
//说明这是第一次请求,就要把搜索框删掉!
linearLayout.removeAllViews();
}
addView(list);
scrollView.onRefreshComplete();
}
});
} catch (RuntimeException e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "木有更多结果啦!", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
} catch (Exception e) {
e.printStackTrace();
linearLayout.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "网络失败,请稍后重试", Toast.LENGTH_LONG).show();
scrollView.onRefreshComplete();
}
});
}
}
});
thread.start();
}
private void addView(final List<NoticeStructure> list) {
for (int i = 0; i != list.size(); ++i) {
NoticeStructure structure = list.get(i);
View view = mInflater.inflate(R.layout.notice_bar, null);
linearLayout.addView(view);
AwesomeFontHelper.setFontFace((TextView) view.findViewById(R.id.notice_bar_icon), mContext);
((TextView) view.findViewById(R.id.notice_bar_name))
.setText(structure.getEventItem("name"));
((TextView) view.findViewById(R.id.notice_bar_starttime))
.setText("从 " + structure.getEventItem("start_time"));
((TextView) view.findViewById(R.id.notice_bar_stoptime))
.setText("至 " + structure.getEventItem("end_time"));
((TextView) view.findViewById(R.id.notice_bar_place))
.setText(structure.getEventItem("place"));
((TextView) view.findViewById(R.id.notice_bar_category))
.setText(structure.getCategoryItem("name"));
((TextView) view.findViewById(R.id.notice_bar_sponser))
.setText(structure.getSponsorItem("showname"));
view.findViewById(R.id.notice_category_layout)
.setOnClickListener(onCategoryClickListener);
view.findViewById(R.id.notice_category_layout)
.setTag(structure.getCategoryItem("id"));
view.findViewById(R.id.notice_sponsor_layout)
.setOnClickListener(onSponsorClickListener);
view.findViewById(R.id.notice_sponsor_layout)
.setTag(structure.getSponsorItem("id"));
view.findViewById(R.id.notice_bar_relative)
.setTag(structure.getEventItem("id"));
try {
TextView ratingTextView = (TextView) view.findViewById(R.id.notice_bar_rating);
AwesomeFontHelper.setFontFace(
ratingTextView,
mContext
);
String ratingString = "";
int stars = (int)(double)Double.valueOf(structure.getEventItem("rating"));
for (int j = 0; j != stars; ++j) {
ratingString += mContext.getText(R.string.icon_star);
}
for (int j = 5; j > stars; --j) {
ratingString += mContext.getText(R.string.icon_star_empty);
}
ratingTextView.setText(ratingString);
} catch (Exception e) {
e.printStackTrace();
}
view.findViewById(R.id.notice_bar_relative)
.setOnClickListener(onEventClickListener);
}
}
final View.OnClickListener onEventClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
int id = Integer.parseInt((String) view.getTag());
Intent intent = new Intent(mContext, NoticeDetailActivity.class);
intent.putExtra("id", id);
((Activity) mContext).startActivity(intent);
((Activity) mContext).overridePendingTransition(R.anim.right_push_in, 0);
}
};
}