基類(原始)

主界面的基類
在使用時要依賴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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,219評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,432評論 4 61
  • (一) 散學典禮在今日舉行,上高中以來,這是我第二次沒有上重本線,作為準高三文科狗,說不害怕絕對是假的。 可丑光對...
    劍堯閱讀 486評論 0 2
  • 突???/div>
    8d16aa6c54cc閱讀 555評論 0 0

友情鏈接更多精彩內(nèi)容