美文网首页
Kotlin安卓学习

Kotlin安卓学习

作者: loyal888 | 来源:发表于2019-05-06 11:13 被阅读0次

一、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

相关文章

网友评论

      本文标题:Kotlin安卓学习

      本文链接:https://www.haomeiwen.com/subject/qodfoqtx.html