package net.coding.program.maopao; import android.content.Intent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.loopj.android.http.RequestParams; import net.coding.program.MyApp; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.ui.BackActivity; import net.coding.program.model.DynamicObject; import net.coding.program.model.Maopao; import net.coding.program.user.UserDetailActivity; import net.coding.program.user.UserDetailActivity_; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.Extra; import org.androidannotations.annotations.ViewById; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; @EActivity(R.layout.activity_like_users_list) public class LikeUsersListActivity extends BackActivity { @Extra int id; @ViewById ListView listView; public static final String HOST_LIKES_USER = Global.HOST_API + "/tweet/%s/allLikesAndRewards?pageSize=5000"; public String UriLikeUsers = HOST_LIKES_USER; private ArrayList<DynamicObject.User> mData = new ArrayList<>(); BaseAdapter baseAdapter = new BaseAdapter() { @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.activity_like_users_list_item, parent, false); holder = new ViewHolder(); holder.name = (TextView) convertView.findViewById(R.id.name); holder.icon = (ImageView) convertView.findViewById(R.id.icon); holder.mutual = (CheckBox) convertView.findViewById(R.id.followMutual); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final DynamicObject.User data = mData.get(position); holder.name.setText(data.name); holder.icon.setTag(LikeUserImage.TAG, data); iconfromNetwork(holder.icon, data.avatar); if (MyApp.sUserObject.global_key.equals(data.global_key)) { holder.mutual.setVisibility(View.INVISIBLE); } else { holder.mutual.setVisibility(View.VISIBLE); int drawableId = data.follow ? R.drawable.checkbox_fans : R.drawable.checkbox_follow; holder.mutual.setButtonDrawable(drawableId); holder.mutual.setChecked(data.followed); holder.mutual.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RequestParams params = new RequestParams(); params.put("users", data.global_key); if (((CheckBox) v).isChecked()) { postNetwork(UserDetailActivity.HOST_FOLLOW, params, UserDetailActivity.HOST_FOLLOW, position, null); } else { postNetwork(UserDetailActivity.HOST_UNFOLLOW, params, UserDetailActivity.HOST_UNFOLLOW, position, null); } } }); } return convertView; } }; @AfterViews protected final void initLikeUsersListActivity() { UriLikeUsers = String.format(UriLikeUsers, id); listView.setAdapter(baseAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(LikeUsersListActivity.this, UserDetailActivity_.class); intent.putExtra("globalKey", mData.get((int) id).global_key); startActivity(intent); } }); getNetwork(UriLikeUsers, UriLikeUsers); } @Override public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException { if (tag.equals(UriLikeUsers)) { if (code == 0) { JSONObject jsonData = respanse.getJSONObject("data"); if (jsonData.has("list")) { JSONArray jsonArray = jsonData.getJSONArray("list"); for (int i = 0; i < jsonArray.length(); ++i) { DynamicObject.User user = new DynamicObject.User(jsonArray.getJSONObject(i)); mData.add(user); } } else { parseUser(jsonData, "rewardUsers", Maopao.Like_user.Type.Reward); parseUser(jsonData, "likeUsers", Maopao.Like_user.Type.Like); } baseAdapter.notifyDataSetChanged(); } else { showErrorMsg(code, respanse); } } } private void parseUser(JSONObject jsonData, String KEY_REWARD, Maopao.Like_user.Type type) throws JSONException { if (jsonData.has(KEY_REWARD)) { JSONArray rewards = jsonData.optJSONArray(KEY_REWARD); for (int i = 0; i < rewards.length(); ++i) { Maopao.Like_user user = new Maopao.Like_user(rewards.optJSONObject(i)); user.setType(type); mData.add(user); } } } static class ViewHolder { ImageView icon; TextView name; CheckBox mutual; } }