package com.wise.service;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import com.wise.data.Article;
import com.wise.extend.FaceConversionUtil;
import com.wise.pubclas.Constant;
import com.wise.pubclas.GetSystem;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import com.wise.service.MyAdapter.UserImageAdapter;
import com.wise.service.MyAdapter.UserImageAdapter.UserImageHolder;
import com.wise.sql.DBExcute;
import com.wise.wawc.FriendHomeActivity;
import com.wise.wawc.ImageActivity;
import com.wise.wawc.PicActivity;
import com.wise.wawc.R;
import android.app.ProgressDialog;
import android.app.ActionBar.LayoutParams;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.text.SpannableString;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
public class FriendArticleAdapter extends BaseAdapter{
private Context context;
private LayoutInflater layoutInflater;
public static boolean isClick = false;
private List<Article> articleList = null;
private StringBuffer sb = null;
//private OnClickListeners listener = null;
private ProgressDialog myDialog = null;
private MyHandler myHandler = null;
private DBExcute dbExcute= null;
private FriendHomeActivity friendHomeActivity = null;
private static final int articleFavorite = 2;
private LinearLayout linearLayout; //点击评论显示输入框
private Bitmap bitmap = null;
private int blogId = 0;
ViewHolder viewHolder;
public FriendArticleAdapter(Context context,LinearLayout linearLayout,List<Article> articleList){
this.context = context;
this.linearLayout = linearLayout;
this.articleList = processData(articleList);
layoutInflater = LayoutInflater.from(context);
//listener = new OnClickListeners(0);
myHandler = new MyHandler();
dbExcute = new DBExcute();
friendHomeActivity = new FriendHomeActivity();
}
public int getCount() {
return articleList.size();
}
public Object getItem(int position) {
return articleList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null){
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.friend_article_adapter, null);
viewHolder.publishTime = (TextView) convertView.findViewById(R.id.friend_article_publish_time);
viewHolder.articleContent = (TextView) convertView.findViewById(R.id.friend_article_content);
viewHolder.data = (TextView) convertView.findViewById(R.id.friend_article_data);
viewHolder.userImage = (GridView) convertView.findViewById(R.id.friend_home_image);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
// 动态显示用户发表的图片
List<Bitmap> smallImageList = new ArrayList<Bitmap>();
List<Bitmap> threeSmallImageList = new ArrayList<Bitmap>();
for (int i = 0; i < articleList.get(position).getImageList().size(); i++) {
Map<String, String> imageMap = articleList.get(position).getImageList().get(i);
// 判断小图是否存在sd卡 /点击小图的时候再判断是否存在sd卡
String smallImage = imageMap.get("small_pic").substring(imageMap.get("small_pic").lastIndexOf("/"));
Bitmap smallBitmap = imageIsExist(Constant.VehiclePath + smallImage,imageMap.get("small_pic"));
if (i <= 2) {
threeSmallImageList.add(smallBitmap);
}
smallImageList.add(smallBitmap);
}
viewHolder.userImage.setAdapter(new UserImageAdapter(threeSmallImageList, position));
viewHolder.userImage.setFocusable(false);
String str = articleList.get(position).getCreate_time();
String createTime = str.substring(0, str.indexOf(".")).replace("T"," ");
viewHolder.articleContent.setText(articleList.get(position).getContent());
String data = getTime(createTime).substring(0,getTime(createTime).indexOf("t"));
String time = getTime(createTime).substring(getTime(createTime).indexOf("t") + 1);
viewHolder.publishTime.setText(time);
String section = getSectionForPosition(position);
if(position == getPositionForSection(section)){
viewHolder.data.setVisibility(View.VISIBLE);
viewHolder.data.setText(this.articleList.get(position).getData());
}else{
viewHolder.data.setText("");
}
return convertView;
}
/**
* 根据ListView的当前位置获取文章对象hashCode值
*/
public String getSectionForPosition(int position) {
return this.articleList.get(position).getData();
}
public int getPositionForSection(String section) {
for (int i = 0; i < getCount(); i++) {
String str = this.articleList.get(i).getData();
if (str.equals(section)) {
return i;
}
}
return -1;
}
class ViewHolder{
public TextView publishTime;
public TextView data = null;
public TextView articleContent = null;
public GridView userImage;
}
// class OnClickListeners implements OnClickListener{
// int position = 0;
// OnClickListeners(int position){
// this.position = position;
// }
// public void onClick(View v) {
// switch(v.getId()){
// }
// }
// }
class MyHandler extends Handler{
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case articleFavorite:
String result = msg.obj.toString();
try {
JSONObject jsonObject = new JSONObject(result);
if(Integer.valueOf(jsonObject.getString("status_code")) == 0){
//更新数据库
dbExcute.updateArticlePraises(context, Constant.TB_VehicleFriend, blogId, Variable.cust_name, Integer.valueOf(Variable.cust_id));
//
// VehicleFriendActivity vehicleFriendActivity = new VehicleFriendActivity();
// //更新列表
// List<Article> oldArticlList = vehicleFriendActivity.getArticleDataList();
// oldArticlList.clear();
// vehicleFriendActivity.setArticleDataList(oldArticlList);
//List<Article> newArticlList = FriendArticleAdapter.this.dbExcute.getArticlePageDatas(context, "select * from " + Constant.TB_VehicleFriend + " order by Blog_id desc limit ?,?", new String[]{String.valueOf(0),String.valueOf(Constant.start1 + Constant.pageSize)}, vehicleFriendActivity.getArticleDataList());
//Variable.articleList = newArticlList;
//vehicleFriendActivity.setArticleDataList(newArticlList);
//FriendArticleAdapter.this.refreshDates(newArticlList);
myDialog.dismiss();
Toast.makeText(context, "点赞成功", 0).show();
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
}
private Bitmap imageIsExist(String path,final String loadUrl) {
File file = new File(path);
if(file.exists()){
bitmap = BitmapFactory.decodeFile(path);
}else{
new Thread(new Runnable() {
public void run() {
Bitmap tempBitmap = GetSystem.getBitmapFromURL(loadUrl);
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File imagePath = new File(Constant.VehiclePath);
if(!imagePath.exists()){
imagePath.mkdir();
}
if(tempBitmap != null){
createImage(Constant.VehiclePath + loadUrl.substring(loadUrl.lastIndexOf("/")),bitmap);
}
}
}
}).start();
}
return bitmap;
}
public void createImage(String fileName,Bitmap bitmap){
FileOutputStream b = null;
try {
b = new FileOutputStream(fileName);
Log.e("------------->" , fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class UserImageAdapter extends BaseAdapter{
List<Bitmap> smallImageList;
int indexId = 0;
UserImageAdapter(List<Bitmap> smallImageList,int indexId){
this.smallImageList = smallImageList;
this.indexId = indexId;
}
public int getCount() {
return smallImageList.size();
}
public Object getItem(int position) {
return smallImageList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
UserImageHolder userImageHolder = null;
if(convertView == null){
userImageHolder = new UserImageHolder();
convertView = layoutInflater.inflate(R.layout.user_image_item, null);
userImageHolder.userImage = (ImageView) convertView.findViewById(R.id.one_image);
userImageHolder.userImage.setLayoutParams(new LinearLayout.LayoutParams(Variable.smallImageReqWidth, Variable.smallImageReqWidth));
convertView.setTag(userImageHolder);
}else{
userImageHolder = (UserImageHolder) convertView.getTag();
}
Bitmap bitmap = smallImageList.get(position);
if(bitmap == null){ //显示临时图片
Bitmap im = BitmapFactory.decodeResource(context.getResources(), R.drawable.article);
userImageHolder.userImage.setImageBitmap(im);
// userImageHolder.userImage.setBackgroundResource(R.drawable.article_comment_bg);
}else{
userImageHolder.userImage.setImageBitmap(smallImageList.get(position));
userImageHolder.userImage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//查看大图
Intent intent = new Intent(context,PicActivity.class);
intent.putExtra("article", articleList.get(indexId));
context.startActivity(intent);
}
});
}
return convertView;
}
class UserImageHolder{
ImageView userImage = null;
}
}
public String getTime(String time){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(new Date());
String time1 = MyAdapter.transform(time);
if(Integer.parseInt(time1.substring(0,4)) < Integer.parseInt(currentTime.substring(0,4))){
return time1.substring(0, 10) + "t" + time1.substring(11, 16);
}else{
if((Integer.parseInt(currentTime.substring(8,10)) - Integer.parseInt(time1.substring(8,10))) == 1){
return "昨天t" + time1.substring(11, 16);
}else if((Integer.parseInt(currentTime.substring(8,10)) - Integer.parseInt(time1.substring(8,10))) == 2){
return "前天t" + time1.substring(11, 16);
}else if((Integer.parseInt(currentTime.substring(8,10)) == Integer.parseInt(time1.substring(8,10)))){
return "今天t" + time1.substring(11, 16);
}
return time1.substring(5, 10) + "t" + time1.substring(11, 16);
}
}
public SpannableString getFaceImage(String faceContent){
return FaceConversionUtil.getInstace().getExpressionString(context, faceContent);
}
public void refreshDates(List<Article> articleList){
this.articleList = processData(articleList);
this.notifyDataSetChanged();
}
public List<Article> processData(List<Article> articleList){
for(int i = 0 ; i < articleList.size() ; i ++){
String str = articleList.get(i).getCreate_time();
String createTime = str.substring(0, str.indexOf(".")).replace("T"," ");
String data = getTime(createTime).substring(0,getTime(createTime).indexOf("t"));
articleList.get(i).setData(data);
}
return articleList;
}
}