一、Kotlin Toast
/**
* 吐司
*/
private fun toast(message:String, length:Int=Toast.LENGTH_LONG){
Toast.makeText(this,message,length).show()
}
/**
* 带tag的土司
*/
private fun toast(
message: String,
tag: String = MainActivity::class.java.simpleName,
length: Int = Toast.LENGTH_LONG
) {
Toast.makeText(this, message, length).show()
}
二、Recyclerview使用
Recyclerview引入:
implementation 'com.android.support:recyclerview-v7:28.0.0'
anko-sqlite引入:
implementation "org.jetbrains.anko:anko-sqlite:0.10.0"
Recyclerview Adapter
Kotlin
class ForcastListAdapter(val items: List<String>) : RecyclerView.Adapter<ForcastListAdapter.ViewHolder>() {
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ViewHolder {
return ViewHolder(TextView(p0.context))
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(holer: ViewHolder, position: Int) {
holer.textView.text = items[position]
}
// 定义ViewHolder
class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)
}
Java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
ArrayList<String> items;
public RecyclerViewAdapter(ArrayList<String> items) {
this.items = items;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new ViewHolder(new TextView(viewGroup.getContext()));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
TextView textView = (TextView) (viewHolder.textView);
textView.setText(items.get(i));
}
@Override
public int getItemCount() {
return items.size();
}
/**
* 定义ViewHolder
*
*/
class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = (TextView) itemView;
}
}
}
给recyclerVIew设置适配器
Kotlin
// recyclerView设置布局管理器 一定还要有,否则不生效
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = ForcastListAdapter(items)
Java
// 设置适配器
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerViewAdapter adapter = new RecyclerViewAdapter(items);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
单例MyApplication(使用伴生对象)
class MyApplication : Application() {
companion object {
private var instance: Application? = null;
fun instance() = instance!!;
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
单例MyApplication(使用Delegate)
class MyApplication : Application() {
companion object {
lateinit var instance: MyApplication
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
anko-sqlite使用
OpenHelper
class MyOpenHelper() : ManagedSQLiteOpenHelper(MyApplication.instance, DB_NAME, null, DB_Version) {
companion object {
val DB_NAME = "my.db"
val DB_Version = 1
val instance by lazy { MyOpenHelper() }
}
/**
* 更新表
*/
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.dropTable("my.db", true)
onCreate(db)
}
/**
* 创建表
*/
override fun onCreate(db: SQLiteDatabase?) {
db?.createTable(
"tableName", true, Pair("id", INTEGER + PRIMARY_KEY),
Pair("name", TEXT),
Pair("age", TEXT)
)
}
}
操作数据库
// 获取可操作数据库
val myOpenHelper = MyOpenHelper()
val db = myOpenHelper.writableDatabase
// 插入数据
val contentValues = ContentValues()
contentValues.put("id",1)
contentValues.put("name","qq")
contentValues.put("age","11")
db.insert("tableName",null,contentValues )
// 查询数据
val query = db.query("tableName", arrayOf("name", "id", "age"), null, null, null, null, null)
while (query.moveToNext()) {
val name = query.getString(1)
Log.d("name", "$name")
}
```k'j