package org.qinshuihepan.bbs.ui;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.AbsListView;
import android.widget.ListView;
import org.jsoup.Connection;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.qinshuihepan.bbs.R;
import org.qinshuihepan.bbs.api.Api;
import org.qinshuihepan.bbs.data.Request;
import org.qinshuihepan.bbs.model.BasePost;
import org.qinshuihepan.bbs.model.Post;
import org.qinshuihepan.bbs.ui.adapter.MyPostsAdapter;
import org.qinshuihepan.bbs.util.TaskUtils;
import org.qinshuihepan.bbs.util.sharedpreference.Athority;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
public class MyPostsActivity extends Activity {
ListView mListView;
Context mContext;
ArrayList<BasePost> posts = new ArrayList<BasePost>();
MyPostsAdapter myPostsAdapter;
int page = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("我的帖子");
mContext = this;
getActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_myposts);
final String uid = Athority.getSharedPreference().getString("uid","");
mListView = ( ListView) findViewById(R.id.listView);
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
switch (scrollState) {
// 当不滚动时
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (mListView.getLastVisiblePosition() == (mListView.getCount() - 1)) {
TaskUtils.executeAsyncTask(new AsyncTask<String, Void, ArrayList<BasePost>>() {
@Override
protected ArrayList<BasePost> doInBackground(String... params) {
Document doc = null;
String post_url = String.format(Api.MY_POSTS, uid) + "&page=" +String.valueOf(page);
Connection.Response response = Request.execute(post_url, Api.USER_AGENT, (Map<String, String>) Athority.getSharedPreference().getAll(), Connection.Method.GET);
try {
doc = response.parse();
Elements bm_cs = doc.getElementsByClass("bm_c");
if (!bm_cs.text().equals("还没有相关的帖子")) {
String str_tid = "";
String title = "";
String time = "";
String comment_count = "";
int haveimg = 0;
int tid = 0;
String author = Athority.getSharedPreference().getString("username","");
BasePost post;
for (Element bm_c : bm_cs) {
Elements as = bm_c.getElementsByTag("a");
for (Element a : as) {
String start = "forum.php?mod=viewthread tid=";
String len = " mobile=1";
String url = a.attr("href");
str_tid = url.substring(start.length() - 1 , url.length() - len.length() + 1);
tid = Integer.valueOf(str_tid);
title = a.text();
}
Elements xg1s = bm_c.getElementsByClass("xg1");
comment_count = xg1s.text().substring("回".length());
post = new Post(0, tid, 0, title, "", time, haveimg, Integer.valueOf(comment_count), author, null);
posts.add(post);
}
page++;
}
} catch (IOException e ) {
e.printStackTrace();
}
return posts;
}
@Override
protected void onPostExecute(ArrayList<BasePost> posts) {
super.onPostExecute(posts);
myPostsAdapter.refresh(posts);
}
});
}
// 判断滚动到顶部
if(mListView.getFirstVisiblePosition() == 0){
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
}
});
TaskUtils.executeAsyncTask(new AsyncTask<String, Void, ArrayList<BasePost>>() {
@Override
protected ArrayList<BasePost> doInBackground(String... params) {
ArrayList<BasePost> posts = new ArrayList<BasePost>();
Document doc = null;
Connection.Response response = Request.execute(String.format(Api.MY_POSTS, uid), Api.USER_AGENT, (Map<String, String>) Athority.getSharedPreference().getAll(), Connection.Method.GET);
try {
doc = response.parse();
Elements bm_cs = doc.getElementsByClass("bm_c");
String str_tid = "";
String title = "";
String time = "";
String comment_count = "";
int haveimg = 0;
int tid = 0;
String author = Athority.getSharedPreference().getString("username","");
BasePost post;
for (Element bm_c : bm_cs) {
Elements as = bm_c.getElementsByTag("a");
for (Element a : as) {
String start = "forum.php?mod=viewthread tid=";
String len = " mobile=1";
String url = a.attr("href");
str_tid = url.substring(start.length() - 1 , url.length() - len.length() + 1);
tid = Integer.valueOf(str_tid);
title = a.text();
}
Elements xg1s = bm_c.getElementsByClass("xg1");
if(xg1s.text().length() != 0) {
comment_count = xg1s.text().substring("回".length());
} else {
comment_count = "0";
}
post = new Post(0, tid, 0, title, "", time, haveimg, Integer.valueOf(comment_count), author, null);
posts.add(post);
}
} catch (IOException e ) {
e.printStackTrace();
}
return posts;
}
@Override
protected void onPostExecute(ArrayList<BasePost> posts) {
super.onPostExecute(posts);
if(posts.size() == 1) {
posts.clear();
}
myPostsAdapter = new MyPostsAdapter(mContext, posts, mListView);
mListView.setAdapter(myPostsAdapter);
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
return true;
}
return super.onOptionsItemSelected(item);
}
}