打開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;
}
}