package org.aisen.weibo.sina.ui.fragment.search; import android.support.v7.widget.GridLayoutManager; 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.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import org.aisen.android.common.utils.SystemUtils; import org.aisen.android.common.utils.Utils; import org.aisen.android.component.bitmaploader.BitmapLoader; import org.aisen.android.support.inject.ViewInject; import org.aisen.android.ui.fragment.APagingFragment; import org.aisen.android.ui.fragment.adapter.ARecycleViewItemView; import org.aisen.android.ui.fragment.adapter.BasicRecycleViewAdapter; import org.aisen.android.ui.fragment.itemview.IITemView; import org.aisen.android.ui.fragment.itemview.IItemViewCreator; import org.aisen.android.ui.widget.MDButton; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.sinasdk.bean.SearchsResultUser; import org.aisen.weibo.sina.sinasdk.bean.StatusContent; import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser; import org.aisen.weibo.sina.support.utils.ImageConfigUtils; import org.aisen.weibo.sina.ui.activity.profile.UserProfileActivity; import org.aisen.weibo.sina.ui.fragment.base.BizFragment; import java.util.ArrayList; /** * Created by wangdan on 16/2/24. */ public class SearchHeaderView extends ARecycleViewItemView<StatusContent> implements View.OnClickListener { @ViewInject(id = R.id.layUsers) LinearLayout layUsers; @ViewInject(id = R.id.txtEmpty) TextView txtEmpty; @ViewInject(id = R.id.recycleview) RecyclerView mRecycleView; private APagingFragment fragment; private BasicRecycleViewAdapter<SearchsResultUser> basicRecycleViewAdapter; public SearchHeaderView(APagingFragment fragment, View itemView) { super(fragment.getActivity(), itemView); this.fragment = fragment; } @Override public void onBindView(View convertView) { super.onBindView(convertView); GridLayoutManager linearLayoutManager = new GridLayoutManager(fragment.getActivity(), 2, LinearLayoutManager.HORIZONTAL, false); mRecycleView.setLayoutManager(linearLayoutManager); basicRecycleViewAdapter = new BasicRecycleViewAdapter(fragment, new HeaderItemCreator(), new ArrayList<>()); basicRecycleViewAdapter.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { UserProfileActivity.launch(fragment.getActivity(), basicRecycleViewAdapter.getDatas().get(position).getScreen_name()); } }); mRecycleView.setAdapter(basicRecycleViewAdapter); } @Override public void onBindData(View convertView, StatusContent data, int position) { } public void setUsers(ArrayList<SearchsResultUser> users) { layUsers.setVisibility(users.size() == 0 ? View.GONE : View.VISIBLE); txtEmpty.setVisibility(users.size() == 0 ? View.VISIBLE : View.GONE); basicRecycleViewAdapter.getDatas().clear(); basicRecycleViewAdapter.getDatas().addAll(users); basicRecycleViewAdapter.notifyDataSetChanged(); } @Override public void onClick(View v) { final SearchsResultUser data = (SearchsResultUser) v.getTag(); WeiBoUser user = new WeiBoUser(); user.setId(data.getId()); user.setIdstr(data.getId()); if (data.isFollowing()) { BizFragment.createBizFragment(fragment).destoryFriendship(user, new BizFragment.OnDestoryFriendshipCallback() { @Override public void onFriendshipDestoryed(WeiBoUser targetUser) { data.setFollowing(false); basicRecycleViewAdapter.notifyDataSetChanged(); } }); } else { BizFragment.createBizFragment(fragment).createFriendship(user, new BizFragment.OnCreateFriendshipCallback() { @Override public void onFriendshipCreated(WeiBoUser targetUser) { data.setFollowing(true); basicRecycleViewAdapter.notifyDataSetChanged(); } }); } } class HeaderItemCreator implements IItemViewCreator<SearchsResultUser> { @Override public View newContentView(LayoutInflater inflater, ViewGroup parent, int viewType) { return inflater.inflate(R.layout.item_search_headerview, parent, false); } @Override public IITemView<SearchsResultUser> newItemView(View convertView, int viewType) { return new ARecycleViewItemView<SearchsResultUser>(fragment.getActivity(), convertView) { @ViewInject(id = R.id.imgPhoto) ImageView imgPhoto; @ViewInject(id = R.id.txtName) TextView txtName; @ViewInject(id = R.id.txtRemark) TextView txtRemark; @ViewInject(id = R.id.btn) MDButton btn; @Override public void onBindData(View convertView, SearchsResultUser data, int position) { RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) convertView.getLayoutParams(); // params.leftMargin = position == 0 || position == 1 ? 0 : Utils.dip2px(8); // params.topMargin = position % 2 == 0 ? 0 : Utils.dip2px(8); params.width = SystemUtils.getScreenWidth(getContext()) * 5 / 6; params.height = Utils.dip2px(getContext(), 110); BitmapLoader.getInstance().display(fragment, data.getProfile_image_url(), imgPhoto, ImageConfigUtils.getLargePhotoConfig()); String name = data.getScreen_name(); if (!TextUtils.isEmpty(data.getRemark())) name = String.format("%s(%s)", name, data.getRemark()); txtName.setText(name); txtRemark.setVisibility(View.VISIBLE); if (!TextUtils.isEmpty(data.getDesc1())) txtRemark.setText(data.getDesc1()); else if (!TextUtils.isEmpty(data.getDesc2())) txtRemark.setText(data.getDesc2()); else if (!TextUtils.isEmpty(data.getDescription())) txtRemark.setText(data.getDescription()); else { txtRemark.setVisibility(View.GONE); txtRemark.setText(""); } if (data.isFollow_me() && data.isFollowing()) { btn.setText(R.string.profile_friendship_each); } else if (data.isFollowing()) { btn.setText(R.string.profile_friendship_destory); } else { btn.setText(R.string.profile_friendship_create); } btn.setTag(data); btn.setOnClickListener(SearchHeaderView.this); } }; } } }