maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
就好了1)kotlin的写法,前面那个是初始化主构造器的参数,后面继承写的参数是主构造器调用的父类传入参数(相当于java的super)
class StudentbaseHelpter(context: Context?) :
SQLiteOpenHelper(context,Constants.DATABASE_NAME,null, Constants.VERSIONCODE) {
override fun onCreate(db: SQLiteDatabase?) {
db?.execSQL("create table studentinfo(_id integer,name varchar,sno varchar,class varchar,grade int)")
}
2)建立Model包,新建Contracts类,并创建伴生对象,包含数据库所用信息,供Helpter类使用
3)来到主AC,新建学生帮助类对象,并且完成学生数据库的初始化创建
fun insert(sid :Int,sname:String,sno:String,sclass:String,sgrade:Int) {
mhelper = StudentbaseHelpter(appContext)
//写入
val db = mhelper?.getWritableDatabase()//获取到数据库后对表进行查找
/* val sql =
"insert into studentinfo(_id,name,sno,class,grade) values(?,?,?,?,?)"
db?.execSQL(sql, arrayOf(1, "Kirika", "18", "1",80))*/
val values = ContentValues()//接着添加数据
values.put("_id", sid)
values.put("name",sname)
values.put("sno", sno)
values.put("class", sclass)
values.put("grade", sgrade)
db?.insert(Constants.TABLE_SNAME, null, values)//二参数是可否为空字段 三参数是填充内容 hashMap结构
db?.close()//关闭相关引用
}
fun deletebyid(sid: Int) {
mhelper = StudentbaseHelpter(appContext)
val db = mhelper?.getWritableDatabase()//获取到数据库后对表进行查找
/*var sql:String="delete from "+Constants.TABLE_SNAME+ " where _id="+sid
db?.execSQL(sql);*/
db?.delete(Constants.TABLE_SNAME, "_id=?", arrayOf(sid.toString()));
db?.close()//关闭相关引用
}
2. 准备登录注册的方法,写跳转的时候发现anko库添加会报错v4.。。神奇目前解决不了
调整好导包失败的原因后,导入anko,bottombar,cardview包
override fun initListener() {
bottomBar.setOnTabSelectListener{
// it代表参数id
val transaction = supportFragmentManager.beginTransaction()
//将当前container替换为第二个参数由FragmentUtil获取
transaction.replace(R.id.container, FragmentUtil.fragmentUtil.getFragment(it),it.toString())//it后需要一个tag
transaction.commit()
}
}
HomeHolder(HomeItemView(parent?.context))
//复写三个次级构造方法
//代码new相关
constructor(context: Context?) : super(context)
//清单文件相关
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
//主题相关
constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle)
/*初始化方法 调用主,次构造方法都会执行
下面阶段的inflate方法传入一个xml文件进行调用
* */
init {
//this 当前的xml文件解析为view传过去 填null则应写addview
View.inflate(context,R.layout.item_home,this)
}
//这个是完成后的HF适配
override fun initListener() {
//2.1初始化layout的 recycler_view1
recycler_view1.layoutManager = LinearLayoutManager(context)
//适配 调用HomeAdapter
val adapter=HomeAdapter()
recycler_view1.adapter = adapter
// 谷歌自带的刷新效果默认有点丑 初始化刷新控件
refreshLayout.setColorSchemeColors(Color.RED, Color.YELLOW, Color.GREEN)
//2.2设置刷新监听
// 可选1.内部只有一个方法 直接打开 2.和之前一样传一个匿名内部类
}
private var list=ArrayList<StudentBean>()//用里面的list匿名内部类
//在集合中先清空 再添加
fun updateList(list: List<StudentBean>){//传入一个对应集合 到时候侧试一下传原lei还是内部类
this.list.clear()
this.list.addAll(list)//牛逼
notifyDataSetChanged()//刷新一下
}
2)代码2,onBindView根据自动position和list绑定更新,更新来到调用条目view
override fun onBindViewHolder(holder: HomeHolder, position: Int) {
//能显示几条后再进行数据绑定
//如果是最后一条就不刷新view
if(position==list.size)
return
//1.拿到条目数据
val data=list.get(position)
//2.拿到条目View
val itemView=holder.itemView as HomeItemView
//3.条目刷新
itemView.setDate(data)
}
3)代码3,条目view更新
/*刷新条目view数据*/
fun setDate(data: StudentBean) {
sid.setText(data.get_id().toString())
name.setText(data.getname())
sno.setText(data.getsno())
stclass.setText(data.getstclass())
grade.setText(data.getgrade().toString())
}
传送实现样例