package com.qianfeng.gl4study.snssdk.fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.Log; import android.view.*; import android.widget.*; import com.qianfeng.gl4study.snssdk.R; import com.qianfeng.gl4study.snssdk.activity.AuthorActivity; import com.qianfeng.gl4study.snssdk.activity.PersonActivity; import com.qianfeng.gl4study.snssdk.activity.PublishDiscuss; import com.qianfeng.gl4study.snssdk.adapter.DiscussListAdapter; import com.qianfeng.gl4study.snssdk.animation.MyAnimation; import com.qianfeng.gl4study.snssdk.constant.Constant; import com.qianfeng.gl4study.snssdk.model.Discuss; import com.qianfeng.gl4study.snssdk.model.Snssdk; import com.qianfeng.gl4study.snssdk.tasks.SnssdkTask; import com.qianfeng.gl4study.snssdk.tasks.TaskProcessor; import com.qianfeng.gl4study.snssdk.utils.Utils; import com.qianfeng.gl4study.snssdk.view.MyListView; import com.qianfeng.gl4study.snssdk.view.SnssdkInfoScrollView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.Serializable; import java.util.LinkedList; /** * * 显示段子详情及评论信息 * Created with IntelliJ IDEA. * I'm glad to share my knowledge with you all. * User:Gaolei * Date:2015/3/11 * Email:pdsfgl@live.com */ public class SnssdkInfoFragment extends Fragment implements TaskProcessor, View.OnClickListener, SnssdkInfoScrollView.ScrollBottomListener { private LinkedList<Discuss> dataFresh; private LinkedList<Discuss> dataTop; private DiscussListAdapter adapterHot; private MyListView recyclerViewHot; private SnssdkTask discussTask; private MyListView recyclerViewFresh; private DiscussListAdapter adapterFresh; private View view; private TextView freshDiscussCount; private TextView hotDiscussCount; private Snssdk snssdk; private ImageView imgGood; private ImageView imgBad; private ImageView imgHot; private TextView txtGood; private TextView txtBad; private TextView txtHot; private int startPoint = 0; private int currentPoint = 0; /** * 初始化视图信息 */ @Override public void onStart() { super.onStart(); startPoint = 0; displaySnssdk(snssdk); displayDiscuss(snssdk); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.snssdk_info_fragment, container, false); Bundle arguments = getArguments(); Serializable serializable = arguments.getSerializable("snssdk"); dataFresh = new LinkedList<Discuss>(); dataTop = new LinkedList<Discuss>(); recyclerViewHot = (MyListView) view.findViewById(R.id.list_view_hot_discuss); recyclerViewFresh = (MyListView) view.findViewById(R.id.list_view_fresh_discuss); freshDiscussCount = (TextView) view.findViewById(R.id.txt_fresscuss); hotDiscussCount = (TextView) view.findViewById(R.id.txt_hot_discuss); SnssdkInfoScrollView discussScrollView = (SnssdkInfoScrollView)view.findViewById(R.id.snssdk_info_scroll_view); discussScrollView.scrollTo(0,0); discussScrollView.setScrollBottomListener(this); if(null!=serializable&&serializable instanceof Snssdk){ snssdk = (Snssdk)serializable; } return view; } /** * 显示评论信息 * @param snssdk 段子 */ private void displayDiscuss(Snssdk snssdk){ downLoaderDiscuss(); adapterHot = new DiscussListAdapter(getActivity(), dataTop); adapterFresh = new DiscussListAdapter(getActivity(),dataFresh ); recyclerViewHot.setAdapter(adapterHot); recyclerViewFresh.setAdapter(adapterFresh); Log.d("SnssdkInfoActivity", "displayDiscuss"); } /** * 获取评论 */ private void downLoaderDiscuss(){ discussTask = new SnssdkTask(this); //主连接,段子Id,异步类型标记,返回评论数量,返回评论起点 StringBuilder stringBuilder = new StringBuilder(); String groupId="group_id="+snssdk.getGroup_id(); String count="&count=10"; //返回的新鲜评论数量 String offset="&offset=" + startPoint; //返回的新鲜评论的起点 stringBuilder.append(Constant.DISCUSS_CONTENT_LIST_URL).append(groupId).append(count).append(offset); discussTask.execute(stringBuilder.toString(),"1"); } /** * 显示段子信息 * @param snssdk 段子 */ private void displaySnssdk(Snssdk snssdk){ TextView itemWord = (TextView) view.findViewById(R.id.item_fragment_word); VideoView itemVideo = (VideoView) view.findViewById(R.id.item_fragment_video); ImageView itemImage = (ImageView) view.findViewById(R.id.item_fragment_image); ImageView itemIconUser = (ImageView) view.findViewById(R.id.item_fragment_user_icon); TextView itemUserName = (TextView) view.findViewById(R.id.item_fragment_user_name); Utils.loaderImage(-1,itemIconUser, snssdk.getAvatar_url()); itemUserName.setText(snssdk.getName()); Log.d("SnssdkInfoActivity","displaySnssdk"); int snssdkType = snssdk.getCategory_type(); if(snssdkType == 1){ String content = snssdk.getContent(); if(null!=content) { itemWord.setText(content); } //itemImage.setVisibility(View.INVISIBLE); }else if(snssdkType == 2){ String content = snssdk.getContent(); if(null!=content) { itemWord.setText(content); } itemImage.setVisibility(View.VISIBLE); itemImage.setImageResource(R.drawable.loading_icon); Utils.loaderImage(view.getWidth(),itemImage, snssdk.getInageContentURL()); //itemVideo.setVisibility(View.GONE); } else if(snssdkType == 18){ //itemImage.setVisibility(View.GONE); //TODO 实际过程应该是视频下载完成,进行隐藏图片,播放视频的操作 itemVideo.setVisibility(View.VISIBLE); String videoContentURL = snssdk.getVideoContentURL(); if(!TextUtils.isEmpty(videoContentURL)) { itemVideo.setVideoURI(Uri.parse(videoContentURL)); itemVideo.start(); } } //控件获取点击监听 LinearLayout userInfo = (LinearLayout) view.findViewById(R.id.item_fragment_bar_user_ll); RelativeLayout clickGood = (RelativeLayout) view.findViewById(R.id.item_fragment_bar_good_ll); RelativeLayout clickBad = (RelativeLayout) view.findViewById(R.id.item_fragment_bar_bad_ll); LinearLayout clickHot = (LinearLayout) view.findViewById(R.id.item_fragment_bar_hot_ll); LinearLayout clikForward = (LinearLayout) view.findViewById(R.id.item_fragment_bar_forward_ll); //获取ImageView imgGood = (ImageView) view.findViewById(R.id.item_fragment_bar_good_img); imgBad = (ImageView) view.findViewById(R.id.item_fragment_bar_bad_img); imgHot = (ImageView) view.findViewById(R.id.item_fragment_bar_hot_img); //获取TextView txtGood = (TextView) view.findViewById(R.id.item_fragment_bar_good); txtBad = (TextView) view.findViewById(R.id.item_fragment_bar_bad); txtHot = (TextView) view.findViewById(R.id.item_fragment_bar_hot); txtGood.setText(snssdk.getDigg_count()+""); txtBad.setText(snssdk.getRepin_count()+""); txtHot.setText(snssdk.getComment_count()+""); userInfo.setOnClickListener(this); clickGood.setOnClickListener(this); clickBad.setOnClickListener(this); clickHot.setOnClickListener(this); clikForward.setOnClickListener(this); } /** * 单击段子上的组件监听 * @param v 单击的组件 */ @Override public void onClick(View v) { int id = v.getId(); switch (id){ case R.id.item_fragment_bar_user_ll://点击用户 Intent intent = new Intent(getActivity(), AuthorActivity.class); startActivity(intent); break; case R.id.item_fragment_bar_good_ll://点击顶 if(snssdk.getUser_repin()==1){ Toast.makeText(getActivity(), "你已经踩了,做人不要矛盾哦", Toast.LENGTH_SHORT).show(); }else { onClickBarImage(); if (snssdk.getUser_digg() == 0) { snssdk.setDigg_count(snssdk.getDigg_count() + 1); snssdk.setUser_digg(1); TextView txtGoodAdd = (TextView) view.findViewById(R.id.item_fragment_bar_good_txt); MyAnimation.addOneAnimation(getActivity(), txtGoodAdd); txtGood.setText(snssdk.getDigg_count()+""); imgGood.setImageResource(R.drawable.ic_bar_digg_pressed); //TODO 更新数据库数据 } Log.d("MainActivity", "item_fragment_bar_good"); } break; case R.id.item_fragment_bar_bad_ll://点击踩 if(snssdk.getUser_digg() == 1){ Toast.makeText(getActivity(),"你已经顶了,做人不要矛盾哦",Toast.LENGTH_SHORT).show(); }else { onClickBarImage(); if (snssdk.getUser_repin() == 0) { snssdk.setRepin_count(snssdk.getRepin_count() + 1); snssdk.setUser_repin(1); TextView txtBadAdd = (TextView) view.findViewById(R.id.item_fragment_bar_bad_txt); MyAnimation.addOneAnimation(getActivity(), txtBadAdd); txtBad.setText(snssdk.getRepin_count()+""); imgBad.setImageResource(R.drawable.ic_bar_bury_pressed); //TODO 更新数据库数据 } } break; case R.id.item_fragment_bar_hot_ll://点击评论,跳转到分享页面 intent = new Intent(getActivity(), PublishDiscuss.class); startActivity(intent); break; } } /** * 先将段子上的顶,踩图标修改成默认的,然后再在相应的位置设置正确的显示 */ private void onClickBarImage(){ //首先将所有图标设置成暗色,然后点击哪一个哪一个变色即可 imgGood.setImageResource(R.drawable.ic_bar_digg_normal); imgBad.setImageResource(R.drawable.ic_bar_bury_normal); } /** * 异步任务的回调,获取段子的评论信息 * @param result 返回的结果 * @param flag 段子类别 */ @Override public void processResult(JSONObject result, String flag) { Log.d("SnssdkInfoActivity","processResult"); if(result!=null){ //评论列表 try { String resultFlag = result.getString("message"); if("success".equals(resultFlag)){ JSONObject dataObject = result.getJSONObject("data"); int tip = result.getInt("total_number"); int type = Integer.parseInt(flag); JSONArray dataJSONArray = dataObject.getJSONArray("recent_comments"); for (int i = 0; i < dataJSONArray.length(); i++) { JSONObject jsonObject = dataJSONArray.getJSONObject(i); Discuss discuss = new Discuss(); discuss.parseInformation(jsonObject); dataFresh.add(discuss); } if(startPoint == 0) { dataJSONArray = dataObject.getJSONArray("top_comments"); for (int i = 0; i < dataJSONArray.length(); i++) { JSONObject jsonObject = dataJSONArray.getJSONObject(i); Discuss discuss = new Discuss(); discuss.parseInformation(jsonObject); dataTop.add(discuss); if(dataFresh.size()>50){ dataFresh.removeFirst(); } } //最热评论数据添加完成,更新List if (dataTop.size() == 0) { hotDiscussCount.setVisibility(View.INVISIBLE); } else { hotDiscussCount.setText("热门评论(" + dataTop.size() + ")"); } adapterHot.notifyDataSetChanged(); } //最新评论数据添加完成,更新List if (tip == 0) { freshDiscussCount.setVisibility(View.INVISIBLE); }else { freshDiscussCount.setText("新鲜评论("+tip+")"); startPoint = dataFresh.size(); } Log.d("SnssdkInfoActivity","新鲜:"+dataFresh.size()+"热门:"+dataTop.size()); adapterFresh.notifyDataSetChanged(); } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void scrollBottom() { downLoaderDiscuss(); } }