package mcxtzhang.commonviewgroupadapter.rv.header; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.mcxtzhang.commonadapter.rv.CommonAdapter; import com.mcxtzhang.commonadapter.rv.HeaderFooterAdapter; import com.mcxtzhang.commonadapter.rv.IHeaderHelper; import com.mcxtzhang.commonadapter.rv.ViewHolder; import java.util.List; import mcxtzhang.commonviewgroupadapter.R; import mcxtzhang.commonviewgroupadapter.TestBean; import static mcxtzhang.commonviewgroupadapter.TestBean.initDatas; public class RvHeaderFooterActivity extends AppCompatActivity { private RecyclerView mRv; private List<TestBean> mDatas; private CommonAdapter mInnerAdapter; private HeaderFooterAdapter mHeaderFooterAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rv_header_footer); mRv = (RecyclerView) findViewById(R.id.rv); mRv.setLayoutManager(new LinearLayoutManager(this)); mInnerAdapter = new CommonAdapter<TestBean>(this, mDatas = initDatas(), R.layout.item_test) { @Override public void convert(ViewHolder holder, TestBean testBean) { Glide.with(RvHeaderFooterActivity.this) .load(testBean.getAvatar()) .into((ImageView) holder.itemView.findViewById(R.id.ivAvatar)); ((TextView) holder.itemView.findViewById(R.id.tvName)).setText(testBean.getName()); } }; mHeaderFooterAdapter = new HeaderFooterAdapter(mInnerAdapter); //1-0 同步静态数据,借助实体类 mHeaderFooterAdapter.setHeaderView(0, new HeaderBean("1-0 同步静态数据,借助实体类 点我跳转到多Type界面")); //1-1 同步静态数据,不借助实体类。 mHeaderFooterAdapter.setHeaderView(1, new IHeaderHelper() { @Override public int getItemLayoutId() { return R.layout.header_1_1; } @Override public void onBind(ViewHolder holder) { holder.setText(R.id.tv1, "1-1 同步静态数据,不借助实体类。"); } }); mRv.setAdapter(mHeaderFooterAdapter); //2-1 异步数据,不借助实体类 mRv.postDelayed(new Runnable() { @Override public void run() { mHeaderFooterAdapter.setHeaderView(2, new IHeaderHelper() { @Override public int getItemLayoutId() { return R.layout.header_2_1; } @Override public void onBind(ViewHolder holder) { //假装从网络拿到了数据 HeaderBean temp = new HeaderBean("2-1 异步数据,不借助实体类"); holder.setText(R.id.tv2, temp.getText()); } }); mHeaderFooterAdapter.notifyItemInserted(2); } }, 4000); } }