主界面的基類
在使用時要依賴3個,下圖右2,搜索butterknife(紅框中的2個),recycler

DO0XU9`]0@EM6S_D7]3(`QJ.png

}NQWKYMTXZF`7F8[EOV]M{1.png
public abstract class BaseAcyivity extends AppCompatActivity {
private Unbinder bind;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getlayoutId());
bind = ButterKnife.bind(this);
initdata();
setOnClick();
}
public abstract void initdata() ;
public abstract int getlayoutId();
public void setOnClick(){
}
@Override
protected void onDestroy() {
super.onDestroy();
bind.unbind();
}
}
APP的基類,承接上下文(記住APP這個類必須要在清單文件中注冊)
記住APP這個類必須要在清單文件中注冊
public class App extends Application{
public static App appContext;
@Override
public void onCreate() {
super.onCreate();
appContext = this;
}
}
適配器的基類(Recycler)
public abstract class AllBaseAdapter<T> extends RecyclerView.Adapter<AllBaseAdapter.MyViewHolder>{
private List<T> data;
private onItemClickListaner listaner;
public AllBaseAdapter(List<T> data) {
this.data = data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//查找對應Item布局
View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(), parent, false);
MyViewHolder holder=new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final AllBaseAdapter.MyViewHolder holder, final int position) {
//設(shè)置數(shù)據(jù)
mset(holder,data.get(position));
//item設(shè)置的點擊事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listaner!=null){
listaner.onItemClick(v,position);
}
}
});
}
//傳過來的數(shù)據(jù)個數(shù)
@Override
public int getItemCount() {
return data==null?0:data.size();
}
public abstract int getLayoutId() ;
public class MyViewHolder extends RecyclerView.ViewHolder{
public View itemView;
public MyViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
}
//將ID的強轉(zhuǎn)寫在這里
protected <E extends View> E getViewById(@IdRes int viewId) {
return (E) itemView.findViewById(viewId);
}
//設(shè)置數(shù)據(jù)
public void setText(@IdRes int id,String context){
TextView textView= getViewById(id);
textView.setText(context);
}
public void setIoce(@IdRes int id, Drawable ioce){
ImageView imageView=getViewById(id);
imageView.setImageDrawable(ioce);
}
//。。。。。可以設(shè)置所有的控件,用時直接點
}
//viewHolder重寫承接,setData代表數(shù)組中的東西
public abstract void mset(MyViewHolder holder,Object setData);
//自己定義一個點擊監(jiān)聽的接口
public interface onItemClickListaner{
void onItemClick(View itemView,int position);
}
//設(shè)置監(jiān)聽,用傳進來的listaner代替它的listaner
public void setOnItemClick(onItemClickListaner listaner){
this.listaner = listaner;
}
}
舉個例子
繼承適配器的類
public class MainAdapter extends AllBaseAdapter {
public MainAdapter(List data) {
super(data);
}
@Override
public int getLayoutId() {
return R.layout.item_main;
}
@Override
public void mset(MyViewHolder viewHolder, Object setData) {
//這里可以設(shè)置各種控件的數(shù)據(jù):viewHolder. 點后面跟控件的方法名
viewHolder.setText(R.id.tv_item_recycler, (String) setData);
}
}
主界面對點擊的使用
public class MainActivity extends BaseAcyivity {
@BindView(R.id.recycler_main)
RecyclerView recyclerMain;
private MainAdapter adapter;
@Override
public void initdata() {
List<String> datas=new ArrayList<>();
datas.add("草莓");datas.add("火龍果");datas.add("蘋果");datas.add("木瓜");
datas.add("西瓜");datas.add("橘子");datas.add("香蕉");datas.add("火龍果");
datas.add("梨");datas.add("草莓");datas.add("火龍果");datas.add("蘋果");
datas.add("木瓜");datas.add("西瓜");datas.add("橘子");datas.add("香蕉");
datas.add("火龍果");datas.add("梨");
RecyclerView.LayoutManager manager=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false);
recyclerMain.setLayoutManager(manager);
adapter = new MainAdapter(datas);
recyclerMain.setAdapter(adapter);
//分割線
recyclerMain.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL));
}
@Override
public int getlayoutId() {
return R.layout.activity_main;
}
public void setOnClick(){
adapter.setOnItemClick(new AllBaseAdapter.onItemClickListaner() {
@Override
public void onItemClick(View itemView, int position) {
Toast.makeText(MainActivity.this,"ok",Toast.LENGTH_SHORT).show();
}
});
}
}
布局自己寫找到對應ID