Nav apraksta

MessageActivity.java 12KB

    package ai.pai.client.activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.android.common.executors.ThreadExecutor; import com.android.common.utils.JSONParseUtils; import com.android.common.utils.LogHelper; import com.android.views.swiperefreshrecyclerview.DividerItemDecoration; import com.android.views.swiperefreshrecyclerview.EndlessRecyclerOnScrollListener; import com.android.views.swiperefreshrecyclerview.HeaderAndFooterRecyclerViewAdapter; import com.android.views.swiperefreshrecyclerview.RecyclerViewUtils; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import ai.pai.client.R; import ai.pai.client.adapter.MessageAdapter; import ai.pai.client.beans.GroupPhotoItem; import ai.pai.client.beans.MessageBean; import ai.pai.client.db.Preferences; import ai.pai.client.fragments.TabMessageFragment.MessageType; import ai.pai.client.utils.HttpPostTask; import ai.pai.client.utils.SystemUtils; import ai.pai.client.utils.UrlContainer; import ai.pai.client.views.MessageCleanPopup; public class MessageActivity extends BaseActivity implements View.OnClickListener,SwipeRefreshLayout.OnRefreshListener,MessageAdapter.MessageActionListener { private RecyclerView recyclerView; private SwipeRefreshLayout swipeRefreshLayout; private MessageCleanPopup cleanPopup; private MessageAdapter refreshAdapter; private HeaderAndFooterRecyclerViewAdapter messageAdapter; private View loadMoreView; private View emptyView; private HttpPostTask fetchMessageTask; private HttpPostTask clearMessageTask; private HttpPostTask readMessageTask; private EndlessRecyclerOnScrollListener scrollListener; private ArrayList<MessageBean> messageList = new ArrayList<MessageBean>(); private int left = Integer.MAX_VALUE; private static final int num = 10; private String type ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_message_push); SystemUtils.setImmerseLayout(this,findViewById(R.id.title_layout)); type = getIntent().getStringExtra("type"); TextView title = (TextView)findViewById(R.id.title_bar_middle_txt); if(MessageType.COMMENT.equals(type)){ title.setText(R.string.message_comment); }else if(MessageType.SYSTEM.equals(type)){ title.setText(R.string.message_push); }else { title.setText(R.string.message_thumbup); } findViewById(R.id.title_bar_back_layout).setOnClickListener(this); findViewById(R.id.title_bar_option_layout).setOnClickListener(this); emptyView = findViewById(R.id.layout_empty); swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout_msg); swipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary); recyclerView = (RecyclerView) findViewById(R.id.recycler_view_msg); recyclerView.setItemAnimator(new DefaultItemAnimator()); LinearLayoutManager layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST)); refreshAdapter = new MessageAdapter(this, messageList); messageAdapter = new HeaderAndFooterRecyclerViewAdapter(refreshAdapter); recyclerView.setAdapter(messageAdapter); refreshAdapter.addMessageDeleteListener(this); loadMoreView = LayoutInflater.from(this).inflate(R.layout.view_load_more, recyclerView, false); RecyclerViewUtils.setFooterView(recyclerView,loadMoreView); swipeRefreshLayout.setOnRefreshListener(this); swipeRefreshLayout.setRefreshing(true); scrollListener = new EndlessRecyclerOnScrollListener() { @Override public void onLoadMore() { if(left > 0){ LogHelper.d(TAG,"message activity onLoadMore"); loadMoreView.setVisibility(View.VISIBLE); doFetchMessageTask(); } } }; recyclerView.addOnScrollListener(scrollListener); doFetchMessageTask(); loadMoreView.setVisibility(View.INVISIBLE); } @Override protected void onDestroy() { super.onDestroy(); if (clearMessageTask!=null && clearMessageTask.getStatus()== AsyncTask.Status.RUNNING){ clearMessageTask.cancel(true); } if (fetchMessageTask!=null && fetchMessageTask.getStatus()== AsyncTask.Status.RUNNING){ fetchMessageTask.cancel(true); } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.title_bar_back_layout: finish(); break; case R.id.title_bar_option_layout: if(cleanPopup==null){ cleanPopup = new MessageCleanPopup(this,this); } cleanPopup.showPopupWindow(); break; case R.id.tv_pop_clean_msg: refreshAdapter.clearMessageList(); doClearMessageTask(null); emptyView.setVisibility(refreshAdapter.getMessageList().size()==0 ? View.VISIBLE :View.GONE); case R.id.tv_pop_cancel: cleanPopup.dismiss(); break; default: break; } } private synchronized void doFetchMessageTask(){ if(fetchMessageTask!=null && fetchMessageTask.getStatus()== AsyncTask.Status.RUNNING){ return; } if(refreshAdapter==null){ return; } int page = refreshAdapter.getMessageList().size() /num +1; LogHelper.d(TAG,"message activity doFetchMessageTask start with page "+page); HashMap<String,String> params = new HashMap<String,String>(); String userId = Preferences.getInstance(this).getUserId(); if(userId.length()==0){ return; } params.put("user_id",userId); params.put("page",String.valueOf(page)); params.put("num",String.valueOf(num)); fetchMessageTask = new HttpPostTask(this,params) { ArrayList<MessageBean> messageItems = new ArrayList<MessageBean>(); @Override protected void onPreExecute() { super.onPreExecute(); scrollListener.setLoading(true); } @Override protected boolean parseResponse(Context context, String response) { try{ JSONObject json = new JSONObject(response); int status = json.getInt("status"); if(status == 200){ LogHelper.d(TAG,"message activity doFetchMessageTask parseResponse status 200"); JSONObject info = json.getJSONObject("data"); JSONArray msg_list = info.getJSONArray("messages"); if(msg_list!=null && msg_list.length()>0){ for(int count = 0; count<msg_list.length();count++){ JSONObject childMsg = msg_list.getJSONObject(count); MessageBean childBean = new MessageBean(); childBean.createTime = JSONParseUtils.getJSONString(childMsg.getString("created_at")); childBean.isRead = childMsg.getBoolean("read"); childBean.msgId = childMsg.getString("pk"); childBean.senderName = JSONParseUtils.getJSONString(childMsg.getString("from_nickname")); childBean.senderAvatarUrl = JSONParseUtils.getJSONString(childMsg.getString("from_avatar")); childBean.content = JSONParseUtils.getJSONString(childMsg.getString("msg_content")); JSONObject photoObj = childMsg.getJSONObject("group_photo_info"); childBean.photoItem = GroupPhotoItem.parseFromJSON(photoObj); messageItems.add(childBean); } } left = info.getInt("left"); LogHelper.d(TAG,"message activity doFetchMessageTask left="+left); return true; } }catch (Exception e){ LogHelper.e(TAG,"message activity doFetchMessageTask error happen "+e); } return false; } @Override protected void onPostFail(Context context) { super.onPostFail(context); scrollListener.setLoading(false); swipeRefreshLayout.setRefreshing(false); loadMoreView.setVisibility(View.GONE); } @Override protected void onPostSuccess(Context context) { super.onPostSuccess(context); scrollListener.setLoading(false); swipeRefreshLayout.setRefreshing(false); loadMoreView.setVisibility(View.GONE); if(refreshAdapter!=null&& messageItems !=null){ LogHelper.d(TAG, "message activity has new message and update adapter :"+ messageItems.size()); refreshAdapter.addMessageList(messageItems); } emptyView.setVisibility(refreshAdapter.getMessageList().size()==0 ? View.VISIBLE :View.GONE); if(messageItems !=null){ doReadMessageTask(); } } }; fetchMessageTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.MESSAGE_LIST_URL+"/"+type+"/list"); } private synchronized void doClearMessageTask(String pk){ if(clearMessageTask!=null && clearMessageTask.getStatus()== AsyncTask.Status.RUNNING){ return; } LogHelper.d(TAG,"message activity doClearMessageTask start "); HashMap<String,String> params = new HashMap<String,String>(); String userId = Preferences.getInstance(this).getUserId(); if(userId.length()==0){ return; } params.put("user_id",userId); if(!TextUtils.isEmpty(pk)){ params.put("pk",pk); }else{ params.put("all","true"); } clearMessageTask = new HttpPostTask(this,params) ; clearMessageTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.CLEAR_MSG_URL+"/"+type+"/delete"); } private synchronized void doReadMessageTask(){ if(readMessageTask!=null && readMessageTask.getStatus()== AsyncTask.Status.RUNNING){ return; } LogHelper.d(TAG,"message activity readMessageTask start "); HashMap<String,String> params = new HashMap<String,String>(); String userId = Preferences.getInstance(this).getUserId(); if(userId.length()==0){ return; } params.put("user_id",userId); params.put("all","true"); readMessageTask = new HttpPostTask(this,params) ; readMessageTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.CLEAR_MSG_URL+"/"+type+"/read"); } @Override public void onRefresh() { LogHelper.d(TAG,"message activity onRefresh"); if(refreshAdapter!=null){ refreshAdapter.clearMessageList(); } doFetchMessageTask(); } @Override public void onMessageDeleted(String messageId) { doClearMessageTask(messageId); emptyView.setVisibility(refreshAdapter.getMessageList().size()==0 ? View.VISIBLE :View.GONE); } }
kodo - Gogs: Go Git Service

Brak opisu

__init__.py 0B