Articles of android recyclerview

RecyclerView ViewPager java.lang.NullPointerException android.support.v7.widget.RecyclerView $ ItemAnimator $ ItemHolderInfo.left

我使用ViewPager与Recyclerview,但在创build时间崩溃… 我试着用Recyclerview.Adapter AsyncListUtil,它的工作。 当我将片段移动到ViewPager时,它开始像这样崩溃。 任何见解? FATAL EXCEPTION: main Process: com.dekanski.popularmovies, PID: 6554 java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference at android.support.v7.widget.SimpleItemAnimator.animateChange(SimpleItemAnimator.java:130) at android.support.v7.widget.RecyclerView.animateChange(RecyclerView.java:3062) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2924) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037) at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:761) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) […]

SwipeRefreshLayout隐藏在空的RecyclerView上

我有一个SwipeRefreshLayout的Fragment ,然后RecyclerView作为孩子。 当Fragment被提交时,它开始与服务器交谈,以便检索一些数据并填充将提供RecyclerView的CustomAdapter。 用户可以通过向下滑动或按下ActionBar上的button来刷新内容。 在后一种情况下,我手动调用swipeRefreshLayout.setRefreshing(true) 。 所以到现在为止没有麻烦。 当我在RecyclerView( onStart() )的第一次加载过程中手动调用刷新状态时,会出现问题。 进度指示器没有出现,我假设因为RecyclerView仍然是空的,因为它需要几秒钟来检索所有的数据… 我给你留下一些代码。 片段代码: public class MyFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mView = inflater.inflate(R.layout.fragment_stop, container, false); mRecyclerView = (RecyclerView) mView.findViewById(R.id.recyclerView1); mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); //SwipeRefreshLayout retrieved and configured swipeLayout = […]

从另一个活动刷新Recyclerview

我有我的主要活动与片段,其中有一个Recyclerview从数据库中填充所有数据。 在这个片段中,我得到一个button,调用另一个活动来将对象插入到数据库中。 问题是当活动结束并返回到主活动Recyclerview不显示我刚刚创build的新项目。 我试着用这段代码: @Override public void onResume() { super.onResume(); adapterItem.addItem(MyApplication.getWritableDatabase().getAllItems()); listProjectsView.scrollToPosition(0); } 函数getAllItems从sqlite中检索所有的数据。 在我的RecyclerView我的adapterItem我得到这个: public void addItem(ArrayList<Item> listItems) { this.listItems = listItems; notifyItemInserted(0); } 它工作“好”。 主要问题是当我切换到另一个应用程序在我的手机进行中,我回到我的开发应用程序的onResume方法打开,并再次显示我的最后一个插入,两次填充这个项目(等等,如果我再做一次)。 谢谢

AppBarLayout,NestedScrollView,FrameLayout,这是怎么回事?

我的活动中有以下代码: <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="160dp"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </android.support.v4.widget.NestedScrollView> 我想在框架布局(“main_content”ID布局)里面添加一个RecyclerView的片段,但在这种情况下,这是行不通的。 问题是什么? 你知道一些例子吗?

Firebase的Android分页

我正在构build一个应用程序,将显示存储在firebase上的video。 video列表需要分页获取最近20个video。 这是我认为会工作的代码 private void getVideos() { Query videosQuery = FirebaseUtil.getVideosRef(); videosQuery.startAt(0); videosQuery.endAt(1); ChildEventListener videosChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { String date = dataSnapshot.getKey(); String temp = date; } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void […]

再循环视图中的触摸没有涟漪效应

我有一个回收站,有四个网格元素(2 * 2),像菜单一样工作。 但是,当我点击它们时,没有显示涟漪效应。 它只是带我到下一个活动,没有任何视觉确认视图被按下。 谁能帮忙? 主要活动 public class MainActivity extends AppCompatActivity implements MainMenuAdapter.OnItemClickListener { Toolbar toolbar; private static List<ViewModel> tileItems = new ArrayList<>(); static { tileItems.add(new ViewModel("Activity", "#3F51B5", R.drawable.activity)); tileItems.add(new ViewModel("Profile", "#E91E63", R.drawable.profile)); tileItems.add(new ViewModel("Training", "#FF5722", R.drawable.training)); tileItems.add(new ViewModel("Diet", "#4CAF50", R.drawable.diet)); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final RecyclerView recyclerView = […]

notifyItemChanged()使RecyclerView滚动并跳转到UP

我有一个适配器的RecycleView显示服务器列表,用户必须select一个服务器。 当我在onClick()方法内调用notifyItemChanged(previousPosition)来使旧的服务器被取消select,并select新的服务器时,这就使得RecycleView列表完全跳到列表中间。 当我点击RecycleView列表中的最后2个或3个服务器之一时,就会发生这个问题 这里是我的RecyclerView.Adapter的代码: public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ServerViewHolder> { private List<Server> listServers = new ArrayList<>(); private int[] icons = new int[]{R.drawable.server1,R.drawable.server2,R.drawable.server3,R.drawable.server4,R.drawable.server5,R.drawable.server6,R.drawable.offline}; private int selected = 0; private int previousSelected = 0; public ServerAdapter(List<Server> listServers){ this.listServers = listServers; } @Override public ServerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.server_relative_layout,parent,false); return new ServerViewHolder(view); } […]

为什么Glide在notifydataset改变时会使项目ImageView闪烁

我正在使用Glide 3.7.0与RecyclerView 。 项目视图总是在刷新时闪烁(调用notifyDataSetChanged )。 这是我的代码: Glide .with(context) .load(filepath) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .dontAnimate() .into(imageview); 当我使用没有caching时,当notifyDataSetChanged方法时, ImageView有一个notifyDataSetChanged图,并且Glide还没有完成加载位图。 如果我使用下面的代码: Glide .with(context) .load(filepath) .dontAnimate() .into(imageview); 然后,项目ImageView不再闪烁(使用caching)。 我想dynamic更新项目视图,所以我禁用滑动caching。 有没有解决这个眨眼错误的解决scheme? 非常感谢你!

SwipeRefreshLayout在片段创build上没有animation

我使用android.support.v4.widget.SwipeRefreshLayout与android.support.v7.widget.RecyclerView 。 在片段视图创build我需要显示SwipeRefreshLayoutanimation。 但是,当我打电话setRefreshing(true)没有任何反应。 但是当我刷新数据animation更改。 我想这个animation在SwipeRefreshLayout里面没有显示没有孩子。 如何以最佳方式显示此animation?

如果视图数量很小,RecyclerView不会回收视图

我一直在处理Recycler视图中的一个奇怪的行为,如果适配器中的视图计数是小的,在我的情况下,大小为5,视图没有被回收和onBindViewHolder不被调用时,视图滚动回屏幕。 例如,如果我增加了10个视图的大小,然后回收开始工作,onBindViewHolder被称为每次进入屏幕视图。 XML <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefresh" android:layout_width="wrap_content" android:layout_height="wrap_content"> <!– RECYCLER VIEW –> <android.support.v7.widget.RecyclerView android:id="@+id/eventsList" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout> Recycler视图初始化 LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); eventsList.setLayoutManager(llm); //Sets endless listener scrollListener = new EndlessRecyclerOnScrollListener(llm,3,mLastDownloadedPage) { @Override public void onLoadMore(int current_page) { Timber.d("Loading date for page: " + current_page); mLastDownloadedPage = current_page; //If it's showing cached don't download […]