已更新:回收视图不会消失
我想显示“列表中没有项目”时,实际上没有任何内容显示在碎片的回收站中。这就是我想:
在我的片段:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f0f0f0"
android:animateLayoutChanges="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/assigned_recycler"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="50dp"
android:background="#f0f0f0"
android:animationCache="true"
android:animateLayoutChanges="false" />
<TextView
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:visibility="gone"
android:text="@string/no_data_available" />
在我的片段的Java文件
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_assigned_orders, container, false);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.assigned_recycler);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this.getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new AssignedOrdersListAdapter(orderService.getAssignedOrders());
mAdapter.setManager(getFragmentManager());
mRecyclerView.setAdapter(mAdapter);
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("Assigned");
emptyViewText = (TextView)rootView.findViewById(R.id.empty_view);
new LegDistanceTask().execute("");
return rootView;
}
@Override
public void onResume() {
super.onResume();
getActivity().registerReceiver(receiver, new IntentFilter("OrderUpdate"));
int count = mAdapter.getItemCount();
if(count==0){
mRecyclerView.setVisibility(View.GONE);
emptyViewText.setVisibility(View.VISIBLE);
}
}
我失去了一些东西在这里?
它也必须做我的布局代码和颜色?
理想情况下,您不应该在onViewCreated中执行此操作,因为您的recyclerview状态可能会根据您如何获取数据而经常更改。所以你应该在获得数据后再做。如果它的服务调用然后在后台执行异步任务。再加上您是否也为回收视图查找了viewviewid?它不在代码 –
嗨Kapsym,我应该把它放在哪里?在调用onViewCreatred之前,我已验证计数确实返回0,服务调用成功完成。我也试过把它放在片段的Resume上。 – Ackman
检查您是否正在更改代码中其他位置的可见性。我只是试了一下,似乎工作正常 –