public abstract class CommonAdapter<T> extends RecyclerView.Adapter<CommonAdapter.MyViewHolder>
{
private Context mContext;
private int mLayoutId;
private List<T> mDatas;
private LayoutInflater mInflater;
public CommonAdapter(Context context, int layoutId, List<T> datas){
mContext = context;
mInflater = LayoutInflater.from(context);
mLayoutId = layoutId;
mDatas = datas;
}
@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
View view = mInflater.inflate(mLayoutId,parent,false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
if(position < mDatas.size()){
convert(holder, mDatas.get(position), position);
}
}
@Override
public int getItemCount() {
return mDatas ==null? 0:mDatas.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> mViews;
private View mConvertview;
public View getConverView(){
return mConvertview;
}
private MyViewHolder(View itemView) {
super(itemView);
mConvertview = itemView;
mViews = new SparseArray<View>();
}
public <V extends View>V getViewById(int viewId){
View view = mViews.get(viewId);
if(view == null){
view = mConvertview.findViewById(viewId);
mViews.put(viewId, view);
}
return (V)view;
}
}
/**
*
* @param holder holder.getViewById
* @param dataBean return DataBean
* @param position posittion
*/
public abstract void convert(MyViewHolder holder, T dataBean, int position);
}
activity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/**
* Button
*/
private Button mButton;
private RecyclerView mRecycleView;
private Toolbar mToolBar;
private CommonAdapter<String> adapter;
private FloatingActionButton mFab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
afterInitView();
}
private void initView() {
// mButton.setOnClickListener(this);
mRecycleView = (RecyclerView) findViewById(R.id.list_view);
mToolBar = (Toolbar) findViewById(R.id.tool_bar);
mFab = (FloatingActionButton) findViewById(R.id.fab);
mFab.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
// case R.id.button:
// Small.openUri("detail", this);
// break;
case R.id.fab:
startActivity(new Intent(this, Test3Activity.class));
break;
}
}
private void afterInitView() {
setSupportActionBar(mToolBar);
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
list.add("hello " + i);
}
adapter = new CommonAdapter<String>(this, android.R.layout.activity_list_item, list) {
@Override
public void convert(MyViewHolder holder, String dataBean, int position) {
TextView textView = holder.getViewById(android.R.id.text1);
textView.setText("hello " + position);
}
};
mRecycleView.setLayoutManager(new LinearLayoutManager(this));
mRecycleView.setAdapter(adapter);
}
}