Note2024072801_类事件的定义和调用

类事件的定义和调用


Public Class UserControl1
    Private WithEvents TY As New 测试类
    '在窗体中申明【带事件的对象】,而不是在类中,该类属于自定义类
    '定义完事件后,需要使用该事件。
    '在上边窗体上选择后自动在窗台函数中生成,而不是在定义的测试类中生成
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim AA As New 测试类 '普通对象的定义,与之相对的是带事件的对象;

        'MsgBox(A.这是个属性) '取过程
        'A.这是个属性 = "NO"  '存过程
        'MsgBox(A.这是个属性) '取过程
        AA.myAdd(5, 6)
        'MsgBox(AA.myMinues(10, 2))
        AA.这是个属性 = "1" '属性被改变时调用事件

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TY.这是个属性 = "Y"
        MsgBox(TY.myMinues(6, 3))
    End Sub

    Private Sub TY_事件名() Handles TY.事件名
        MsgBox("事件被响应了")
    End Sub

    Private Sub TY_方法事件(参数1 As String, 参数2 As Integer) Handles TY.方法事件      '想要激活事件,就要按定义事件的方法传入参数  之前是用属性来激活事件,现在用方法来激活事件
        MsgBox(参数1)
        MsgBox(参数2)
    End Sub
End Class




'分离出来的目的是制作动态连接库
'动态链接库可以在别的项目中使用
'
Public Class 测试类
    Private Property 这是个属性A As String = "OK"
    '属性的过程,这点和变量的定义过程不同
    Public Property 这是个属性 As String '属性的过程,这点和变量的定义过程不同
        Get '取过程
            MsgBox("You are getting a value =" & 这是个属性A)
            Return 这是个属性A
        End Get
        Set(value As String)    '存过程
            MsgBox("你正在存入值=" & value)
            RaiseEvent 事件名()      '响应一个事件
            这是个属性A = value
        End Set
    End Property

    '类的方法使用:
    ''' <summary>
    ''' 这是个加法运算方法,参数1+参数2,返回整数结果。
    ''' </summary>
    ''' <param name="A"></param>
    ''' <param name="B"></param>
    Public Sub myAdd(A As Integer, B As Integer)
        MsgBox(A + B)
    End Sub
    ''' <summary>
    ''' 这个是减法运算方法,参数1-参数2,返回整数结果。
    ''' </summary>
    ''' <param name="A"></param>
    ''' <param name="B"></param>
    ''' <returns></returns>
    Public Function myMinues(A As Integer, B As Integer) As Integer
        RaiseEvent 方法事件("第一个参数", 100)
        Return A - B
    End Function


    Private Sub 测试类_事件名() Handles Me.事件名
        MsgBox(666)
    End Sub



    '类事件的定义
    Public Event 事件名()
    Public Event 方法事件(ByVal 参数1 As String, ByVal 参数2 As Integer) '定义事件,然后就是激活事件


    '最后可以看到,对 测试类 定义了两个属性、两个方法、两个事件
    '类属性、事件和方法,特性是封装,继承,和多态。
End Class

以上

首先,在你的项目中需要配置 Room Persistence Library,具体可以参考官方文档。 接着,你需要创建一个数据实体,用于定义存储在数据库中的数据结构,例如: ```java @Entity(tableName = "notes") public class Note { @PrimaryKey(autoGenerate = true) private int id; private String title; private String content; public Note(String title, String content) { this.title = title; this.content = content; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } ``` 然后,你需要创建一个 DAO(Data Access Object)接口,用于定义对数据进行 CRUD(Create、Read、Update、Delete)操作的方法,例如: ```java @Dao public interface NoteDao { @Query("SELECT * FROM notes") List<Note> getAll(); @Insert void insertAll(Note... notes); @Delete void delete(Note note); @Update void update(Note note); } ``` 接下来,在你的 Activity 中,你需要创建一个 RecyclerView 和一个 RecyclerView.Adapter,并将它们连接起来。 在 Adapter 中,你需要定义 ViewHolder ,并实现 onCreateViewHolder、onBindViewHolder 和 getItemCount 方法,例如: ```java public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.NoteViewHolder> { private List<Note> notes; public NoteAdapter(List<Note> notes) { this.notes = notes; } @NonNull @Override public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_note, parent, false); return new NoteViewHolder(view); } @Override public void onBindViewHolder(@NonNull NoteViewHolder holder, int position) { Note note = notes.get(position); holder.titleTextView.setText(note.getTitle()); holder.contentTextView.setText(note.getContent()); } @Override public int getItemCount() { return notes.size(); } static class NoteViewHolder extends RecyclerView.ViewHolder { TextView titleTextView; TextView contentTextView; NoteViewHolder(View itemView) { super(itemView); titleTextView = itemView.findViewById(R.id.titleTextView); contentTextView = itemView.findViewById(R.id.contentTextView); } } } ``` 最后,在 Activity 中,你需要获取 Room 数据库实例,并调用 DAO 中定义的方法来获取数据,并将数据传递给 RecyclerView.Adapter,例如: ```java public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private NoteAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new NoteAdapter(new ArrayList<Note>()); recyclerView.setAdapter(adapter); AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build(); new AsyncTask<Void, Void, List<Note>>() { @Override protected List<Note> doInBackground(Void... voids) { return db.noteDao().getAll(); } @Override protected void onPostExecute(List<Note> notes) { super.onPostExecute(notes); adapter = new NoteAdapter(notes); recyclerView.setAdapter(adapter); } }.execute(); } } ``` 以上就是在 MainActivity 中调用 Room 数据库填充 RecyclerView 的 Java 代码。注意,为了避免在主线程中进行数据库操作而导致应用卡顿,我们使用了 AsyncTask 来进行异步操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值