recyclerView视图

在上次的基础上做了改进,把textview改成了recyclerview

 

 

MainActivity

package com.example.roombasic;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.List;

public class MainActivity extends AppCompatActivity {
    Button insert, update, clear, delete;
    WordViewModel wordViewModel;
    RecyclerView recyclerView;
    MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wordViewModel = new ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(WordViewModel.class);
        recyclerView=findViewById(R.id.recyclerView);
        myAdapter=new MyAdapter();
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(myAdapter);
        wordViewModel.getAllWordsLive().observe(this, new Observer<List<Word>>() {
            @Override
            public void onChanged(List<Word> words) {
                myAdapter.setAllwords(words);
                myAdapter.notifyDataSetChanged();

            }
        });
        insert = findViewById(R.id.insert);
        clear = findViewById(R.id.clear);
        delete = findViewById(R.id.delete);
        update = findViewById(R.id.update);
        insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String [] english={
                        "Hello","World","Android","Google","Studio","Project","Database","Recycle","View","String","Value","Integer"
                };
                String[] chinese={"你好","世界","安卓系统","谷歌公司","工作室","项目","数据库","回收站","视图","字符串","价值","整数类型"};
                for(int i=0;i<english.length;i++){
                    wordViewModel.insertWord(new Word(english[i],chinese[i]));
                }
            }
        });
        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                wordViewModel.deleteAllWord();
            }
        });
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Word word = new Word("Hi", "你好啊");
                word.setId(10);
                wordViewModel.updateWord(word);
            }
        });
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Word word = new Word("world", "世界");
                word.setId(32);
                wordViewModel.deleteWord(word);
            }
        });
    }


}

MyAdapter  适配器

package com.example.roombasic;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    List<Word> allwords=new ArrayList<>();

    public void setAllwords(List<Word> allwords) {
        this.allwords = allwords;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater=LayoutInflater.from(parent.getContext());
        View itemView=layoutInflater.inflate(R.layout.cell_normal,parent,false);
        return  new MyViewHolder(itemView);
        //return null;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Word word=allwords.get(position);
        holder.textViewnumber.setText(String.valueOf(position+1));
        holder.textViewenglish.setText(word.getWord());
        holder.textViewchinese.setText(word.getChieseMeaning());

    }

    @Override
    public int getItemCount() {
        return allwords.size();
    }

    static class  MyViewHolder extends RecyclerView.ViewHolder{
        TextView textViewnumber,textViewenglish,textViewchinese;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            textViewnumber=itemView.findViewById(R.id.textViewnumber);
            textViewenglish=itemView.findViewById(R.id.textViewenglish);
            textViewchinese=itemView.findViewById(R.id.textViewchinese);
        }
    }
}

 activity_main.xml

 

 cell_normal.xml

 

posted @ 2022-01-16 20:32  年年ℓ  阅读(53)  评论(0)    收藏  举报