0

我的適配器的Android再循環視圖不工作

public class DepartmentsAdapter extends RecyclerView.Adapter<DepartmentsAdapter.ViewHolder>{ 

// Store a member variable for the contacts 
private List<AppDepartments> mDepartments; 
// Store the context for easy access 
private Context mContext; 


@Override 
public DepartmentsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    Context context = parent.getContext(); 
    LayoutInflater inflater = LayoutInflater.from(context); 

    // Inflate the custom layout 
    View contactView = inflater.inflate(R.layout.app_department_item, parent, false); 
    // Return a new holder instance 
    ViewHolder viewHolder = new ViewHolder(contactView); 
    return viewHolder; 
} 

// Involves populating data into the item through holder 
@Override 
public void onBindViewHolder(DepartmentsAdapter.ViewHolder holder, int position) { 
    AppDepartments appDepartments = mDepartments.get(position); 
    // Set item views based on your views and data model 
    /* holder.txtViewName.setText(appDepartments.getDeptName()); 
    holder.txtViewUser.setText(appDepartments.getDeptUser());*/ 
    holder.txtViewName.setText("HELLO"); 
    holder.txtViewUser.setText("ITS VICTOR"); 

} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

@Override 
public int getItemCount() { 
    return 0; 
} 

public class DiscoverFragment extends Fragment { 

public DiscoverFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_discover, container, false); 
    departmentsAdapter = new DepartmentsAdapter(getActivity(),departList); 
    // Lookup the recyclerview in activity layout 
    RecyclerView displayDeparts = (RecyclerView) rootView.findViewById(R.id.appDepartments); 
    displayDeparts.setAdapter(departmentsAdapter); 
    displayDeparts.setLayoutManager(new LinearLayoutManager(getActivity())); 
    // Inflate the layout for this fragment 
    return rootView; 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 

} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
} 

}

上面的代碼返回空白屏幕,不顯示我的片段的textviews 。請幫助。 我已經評論了模型,以便我可以用硬編碼文本進行測試。 我下面這篇文章http://guides.codepath.com/android/Using-the-RecyclerView

+0

不要忘記填寫 – hakim

+0

您還沒有添加任何''departList值值到departList並且在Adapter的getItemCount中返回departList.size()而不是0 –

回答

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

(不知道這將徹底解決你的問題)

+0

很可能會導致應用程序崩潰,因爲OP示例代碼中的mDepartments仍然爲空 – hakim

+0

是的,因爲它尚未實例化。嘗試: '私人列表 mDepartments =新的ArrayList ();' – Sigma

+0

而不是返回正好大小這樣做​​... '返回mDepartments == null? 0:mDepartments.size();' – arcticwhite

0

在您的代碼: setLayoutManager(new LinearLayoutManager(getActivity()))setAdapter(departmentsAdapter)之前。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_discover, container, false); 
    displayDeparts.setLayoutManager(new LinearLayoutManager(getActivity())); 
    departmentsAdapter = new DepartmentsAdapter(getActivity(), departList); 
    // Lookup the recyclerview in activity layout 
    RecyclerView displayDeparts = (RecyclerView) rootView.findViewById(R.id.appDepartments); 
    displayDeparts.setAdapter(departmentsAdapter); 
    // Inflate the layout for this fragment 
    return rootView; 
} 
1

您需要設置適配器之前設置LayoutManagerRecyclerView。這樣

displayDeparts.setLayoutManager(new LinearLayoutManager(getActivity())); 
displayDeparts.setAdapter(departmentsAdapter); 
0

變化代碼嘗試做了這些改變:

@Override 
public long getItemId(int i) { 
    return i; 
} 

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

嘗試從我的代碼如下移動代碼onViewCreated

@Override 
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
      super.onViewCreated(view, savedInstanceState); 

     pref = getActivity().getSharedPreferences("AppPreference", Context.MODE_PRIVATE); 
     edit = pref.edit(); 

     swipe_container_reports = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container_reports); 

     swipe_container_reports.setColorSchemeResources(
       R.color.colorAccent, 
       R.color.colorPrimaryDark, 
       R.color.cardview_dark_background); 

     swipe_container_reports.setOnRefreshListener(this); 

     //Recycler View 
     recyclerView = (RecyclerView) view.findViewById(R.id.reports_recycler); 
     recyclerView.setHasFixedSize(true); 
     layoutManager = new LinearLayoutManager(getContext()); 
     recyclerView.setLayoutManager(layoutManager); 

     swipe_container_reports.setRefreshing(true); 

     reportingUserTask = (ReportingUserTask) new ReportingUserTask(getContext(), Integer.valueOf(pref.getString("UserId", ""))); 
     reportingUserTask.setOnFinishListener(this); 
     reportingUserTask.execute(); 

    } 

也當任務完成電話跟進:

adapter = new ReportRecyclerAdapter((ArrayList<ReportDetail>) reportDetailList, Integer.valueOf(pref.getString("UserId", "")), getContext()); 
recyclerView.setAdapter(adapter); 

這完美的作品對我來說

0

首先,你必須設置佈局管理,然後setAdapter到recyclerView這樣的:

RecyclerView displayDeparts = (RecyclerView) rootView.findViewById(R.id.appDepartments); 
departmentsAdapter = new DepartmentsAdapter(getActivity(),departList); 
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); 
displayDeparts.setLayoutManager(mLayoutManager); 
displayDeparts.setAdapter(departmentsAdapter);