public class MyCreditCardAdapter extends BaseAdapter{ View view; private List<MyCreditCardBean> mLists; private Context context; private final int VIEW_TYPE_COUNT = 2; //子布局个数 private final int TYPE_1 = 0; //子布局 1 private final int TYPE_2 = 1; // public MyCreditCardAdapter(List<MyCreditCardBean> mLists, Context context) { this.mLists = mLists; this.context = context; } @Override public int getItemViewType(int position) { if (mLists.get(position).isShow()==false){ //以数据源中的某个标签来判断加载那个子布局样式 return TYPE_1; }else{ return TYPE_2; } } @Override public int getViewTypeCount() { return VIEW_TYPE_COUNT; //子布局个数 } @Override public int getCount() { return mLists.size(); } @Override public Object getItem(int position) { return mLists.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder mHolderView = null; ViewHolder1 mHolderView1 = null; view = convertView; int view_type = getItemViewType(position); //得到对应位置子布局类型 if (view == null) { switch (view_type){ case TYPE_1: view = View.inflate(context, R.layout.activity_cardinfo_short, null); mHolderView = new ViewHolder(view); view.setTag(mHolderView); mHolderView.ivshow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnShowCardBtnClickListener.onBtnClick(position); } }); break; case TYPE_2: view = View.inflate(context, R.layout.activity_cardinfo, null); mHolderView1 = new ViewHolder1(view); view.setTag(mHolderView1); mHolderView1.iv_shouqi.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnUnShowCardBtnClickListener.onBtnClick(position); } }); break; } } else { switch (view_type){ case TYPE_1: mHolderView = (ViewHolder) convertView.getTag(); break; case TYPE_2: mHolderView1 = (ViewHolder1) convertView.getTag(); break; } } return view; } /** * 显示银行卡内容按钮点击回调 */ public interface onShowCardBtnClickListener { void onBtnClick(int position); } private onShowCardBtnClickListener mOnShowCardBtnClickListener; public void setmOnShowCardBtnClickListener (onShowCardBtnClickListener mOnShowCardBtnClickListener) { this.mOnShowCardBtnClickListener = mOnShowCardBtnClickListener; } /** * 隐藏银行卡内容按钮点击回调 */ public interface onUnShowCardBtnClickListener { void onBtnClick(int position); } private onUnShowCardBtnClickListener mOnUnShowCardBtnClickListener; public void setmOnUnShowCardBtnClickListener(onUnShowCardBtnClickListener mOnUnShowCardBtnClickListener) { this.mOnUnShowCardBtnClickListener = mOnUnShowCardBtnClickListener; } static class ViewHolder { @Bind(R.id.ivshow) ImageView ivshow; ViewHolder(View view) { ButterKnife.bind(this, view); } } static class ViewHolder1 { @Bind(R.id.refresh) ImageView refresh; @Bind(R.id.quanxianjilu) TextView quanxianjilu; @Bind(R.id.huankuanjilu) TextView huankuanjilu; @Bind(R.id.quxian) TextView quxian; @Bind(R.id.huankuan) TextView huankuan; @Bind(R.id.iv_shouqi) ImageView iv_shouqi; ViewHolder1(View view) { ButterKnife.bind(this, view); } } public void refreshData(List<MyCreditCardBean> list){ this.mLists = list; //这里变成添加数据 notifyDataSetChanged(); } }
adapter = new MyCreditCardAdapter(mLists,mActivity); lv.setAdapter(adapter); adapter.setmOnShowCardBtnClickListener(new MyCreditCardAdapter.onShowCardBtnClickListener() { @Override public void onBtnClick(int position) { mLists.get(position).setShow(true); adapter.refreshData(mLists); } }); adapter.setmOnUnShowCardBtnClickListener(new MyCreditCardAdapter.onUnShowCardBtnClickListener() { @Override public void onBtnClick(int position) { mLists.get(position).setShow(false); adapter.refreshData(mLists); } });