RecyclerView的基本用法

打開app/build.gradle文件,在dependencies閉包中添加相應(yīng)依賴庫

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0' 
    testImplementation 'junit:junit:4.12'
}

點(diǎn)擊Sync Now進(jìn)行同步,在xml布局文件中加入RecyclerView控件

<android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

為RecyclerView準(zhǔn)備一個適配器,新建一個NewsAdapter類,并讓它繼承RecyclerView.Adapter,并將泛型指定為NewsAdapter.Viewholder;
其中Viewholder是自己在NewsAdapter中定義的一個內(nèi)部類,繼承自RecyclerView.Viewholder,然后給Viewholder的構(gòu)造函數(shù)中傳入一個View參數(shù)(通常是RecycleView子項(xiàng)的最外層布局),那么就可以通過findViewById()的方法來獲取布局中的實(shí)例了

public class NewsAdapter extends RecyclerView.Adapter {

    private List<News> newsList;

    public NewsAdapter(List<News> newsList) {
        this.newsList = newsList;
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        TextView newTitleText;
        public ViewHolder(View view){
            super(view);
            newTitleText = (TextView) view.findViewById(R.id.news_title);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_item, parent, false);
        final ViewHolder holder = new ViewHolder(view);
        view.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                
            }
        });
        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        News news= newsList.get(position);
        holder.newsTitleText,setText(news.getTitle());
    }

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

}

onCreateViewHolder負(fù)責(zé)為Item創(chuàng)建視圖
onBindViewHolder負(fù)責(zé)將數(shù)據(jù)綁定到Item視圖

適配器準(zhǔn)備好后,就可以使用RecyclerView了

public class NewsTitleFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.news_title_frag,container,false);
        RecyclerView newsTitleRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        newsTitleRecyclerView.setLayoutManager(linearLayoutManager);
        NewsAdapter newsAdapter = new NewsAdapter(getNews());
        newsTitleRecyclerView.setAdapter(newsAdapter);
        return view;
    }

    private List<News> getNews(){
        List<News> newsList = new ArrayList<News>();
        for (int i=1; i<20; i++){
            News news = new News();
            news.setTitle("This is title" + i);
            news.setContent("Hi,here is content" + i);
            newsList.add(news);
        }
        return newsList;
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容