我来自大书呆子牧场
回收者视图不显示任何项目
但代码似乎相同
这是我的代码
适配器和视图持有者所在的类
public class CrimeListFragment extends Fragment {
private RecyclerView crime_recyclerView;
private CrimeAdapter crimeAdapter ;
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_crime_list, container, false);
crime_recyclerView=view.findViewById(R.id.crime_recycler_View);
crime_recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
crime_recyclerView.smoothScrollToPosition(0);
updateUI();
return view;
}
private void updateUI(){
CrimeLab crimeLab = CrimeLab.get(getActivity());
List<Crime> crimes =crimeLab.getcrimes();
crimeAdapter=new CrimeAdapter(crimes);
crime_recyclerView.setAdapter(crimeAdapter);
}
private static class CrimeHolder extends RecyclerView.ViewHolder {
public CrimeHolder ( LayoutInflater inflater,ViewGroup parent) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_crime,parent,false));
}
}
private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder>{
private final List<Crime> m_crimes;
public CrimeAdapter(List<Crime> crimes) {
this.m_crimes = crimes;
}
@Override
public CrimeHolder onCreateViewHolder( ViewGroup parent, int viewType) {
LayoutInflater inflater= LayoutInflater.from(getActivity());
return new CrimeHolder(inflater,parent);
}
@Override
public void onBindViewHolder( CrimeHolder holder, int position) {
}
@Override
public int getItemCount() {
return m_crimes.size();
}
}
}
这两个 TextView XML 的持有者
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:id="@+id/Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem"
android:textSize="19sp"/>
<TextView
android:id="@+id/Description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
</LinearLayout>
这是一个创建数组列表并填充它的类
public class CrimeLab {
private static CrimeLab sCrimeLab;
private List <Crime> mcrimes;
private CrimeLab(Context context) {
mcrimes =new ArrayList<>();
for (int i=0 ;i<100;i++){
Crime crime = new Crime();
crime.setTitle("Crime #"+i);
crime.setSolved(i%2==0);
mcrimes.add(crime);
}
}
public static CrimeLab get(Context context){
if(sCrimeLab==null){
sCrimeLab=new CrimeLab(context);
}
return sCrimeLab;
}
public List<Crime> getcrimes()
{
return mcrimes;
}
/////////////////////////////////:
public Crime getCrime(UUID id){
for(Crime crime :mcrimes){
if(crime.getId().equals(id)){
return crime;
}
}
return null;
}
}
这是项目应该出现的地方
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Fragment_container" />
有很多课程,但这就是你所需要的
答案 0 :(得分:0)
您忘记将数据绑定到适配器的 onBindViewHolder 方法中。
答案 1 :(得分:0)
private static class CrimeHolder extends RecyclerView.ViewHolder {
public TextView title, description;
public CrimeHolder (View view) {
super(view);
title = view.findViewById(R.id.Title);
description = view.findViewById(R.id.Description);
}
}
private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder>{
private final List<Crime> m_crimes;
public CrimeAdapter(List<Crime> crimes) {
this.m_crimes = crimes;
}
@Override
public CrimeHolder onCreateViewHolder( ViewGroup parent, int viewType) {
LayoutInflater inflater= LayoutInflater.from(getActivity());
return new CrimeHolder(inflater,parent);
}
@Override
public void onBindViewHolder( CrimeHolder holder, int position) {
holder.title.setText(m_crimes.get(position).getTitle());
holder.description.setText(m_crimes.get(position).getDescription())
}
@Override
public int getItemCount() {
return m_crimes.size();
}
}
记住 getTitle
和 getDescription
是标题和描述的吸气剂。