Articles of android recyclerview

java.lang.IllegalStateException:RecyclerView在Fragment中没有LayoutManager

我正在修改一个Activity到一个Fragment的过程中,并且在我充气RecyclerView的时候出现了下面的错误。 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { —-> View rootView = inflater.inflate(R.layout.layout_containing_recyclerview, container, false); java.lang.IllegalStateException:RecyclerView没有LayoutManager 在将我的活动更改为片段之前,充气已经很好了。 一些进一步的研究表明,从回收站布局中删除所有我的孩子元素有助于解决问题。 不过,我不明白为什么这会改变什么,为什么它的工作与以前的活动工作。 作品 <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:scrollbars="vertical" > </android.support.v7.widget.RecyclerView> 不工作 <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:scrollbars="vertical" > <View android:id="@+id/randomview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </android.support.v7.widget.RecyclerView> 我在这里错过的任何东西?

在RecyclerView中显示带有图标的string的最简单的方法

什么是最简单的方法来显示一个RecyclerView中的string和图标列表? 对于ListView我使用下面的代码(这里是一个完整的项目在GitHub ) 没有一个单独的适配器: mListView = (ListView) findViewById(R.id.list_view); mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mPlanets) { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view = (TextView) super.getView(position, convertView, parent); view.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_stars_black_24dp, 0, 0, 0); return view; } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), "You […]

如何在Android中自动向上滚动Recycler视图?

我已经开发了一些聊天应用程序,我可以发送和接收消息。 但问题是每当我发送或接收消息的回收站视图不滚动到顶部,以便消息显示在键盘上方。 我已经使用上述回收视图android.support.v7.widget.RecyclerView 。

RecyclerView内容高度

有没有什么好的方法来获得RecyclerView内的高度? 考虑到所有项目可能有不同的高度。 在我的情况下,我正在使用LinearLayoutManager。 我四处搜寻,发现这个问题令人惊讶的结果。

如何使RecyclerView平滑滚动?

这更像是一个通用的问题,但经过大量的search和尝试,我无法理解为什么这是如此难以实现。 这是我能find的最接近的答案,但仍然无法执行。 具体来说,我使用GridLayoutManager的RecyclerView。 我想要的是网格布局平滑滚动(如默认的gallary应用程序),没有什么奇特的,但网格布局pipe理器的默认实现滚动视图的方式'急躁'。 我试图从上面的链接实现该方法,但没有成功。 我也试图实现LinearSmoothScroller,但我不知道如何实现computeScrollVectorForPosition方法。 Google在computeScrollVectorForPosition上的文档实际上有0个字。 我发现这个3部分的教程 ,但它是没有什么帮助。 所以,我想问的是:是否可以在LinearSmoothScroller中实现某种模板代码,或者通过扩展RecyclerView.SmoothScroller实现平滑滚动? 即使代码依赖于gridlayout中每行的项目和项目的数量,也必须有一些方法可以轻松完成。 我在这里错过了什么?

RecyclerView从右向左增长元素

我在水平方向使用RecyclerView和新元素从左到右。 滚动是ltr。 如何改变这个方向? Xml代码: <android.support.v7.widget.RecyclerView android:id="@+id/rc3" android:layout_gravity="right" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 和Java: RecyclerView rc1 = (RecyclerView) findViewById(R.id.rc1); AdapterMainPrice mainPrice = new AdapterMainPrice(StructPrice.getThreePrice()); rc1.setHasFixedSize(false); LinearLayoutManager llm = new LinearLayoutManager(G.context); llm.setOrientation(LinearLayoutManager.HORIZONTAL); rc1.setLayoutManager(llm); rc1.setAdapter(mainPrice); 适配器: 公共类AdapterMainPriceinheritanceRecyclerView.Adapter { private List<StructPrice> prices; public AdapterMainPrice(List<StructPrice> catList) { this.prices = catList; } @Override public int getItemCount() { return prices.size(); } @Override public void […]

Android:RecyclerView项目设置为可点击的块时触发onTouch事件

看起来像设置RecyclerView的项目布局clickable =“true”,完全消耗一些触摸事件,特别是MotionEvent.ACTION_DOWN(ACTION_MOVE和ACTION_UP事后工作): item.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/demo_item_container" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:background="?android:attr/selectableItemBackground" android:clickable="true"> <– this what breaks touch event ACTION_DOWN …. </LinearLayout> 在onCreate()中有非常基本的RecyclerView设置: RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list); … //Standard recyclerView init stuff //Please note that this is NOT recyclerView.addOnItemTouchListener() recyclerView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { Log.d("", "TOUCH — " + motionEvent.getActionMasked()); //Will […]

删除RecyclerView中的基于光标的项目

这是我的recyclerView编码(部分): expensesListCursor = dbc.listExpenses(selectedDate); mLayoutManager = new LinearLayoutManager(getActivity()); rvExpenses.setLayoutManager(mLayoutManager); rvExpenses.setItemAnimator(new DefaultItemAnimator()); mAdapter = new AdapterExpensesList(expensesListCursor,getActivity()); rvExpenses.setAdapter(mAdapter); 这里是我的dbc.ListExpenses是如何写的 public Cursor listExpenses(String date){ Cursor cursor; cursor = database.query(MySQLiteHelper.TABLE_EXPENSES, new String[] {"rowid as _id", "description, cost"}, "date='" + date + "'", null, null, null, "_id asc"); if (cursor != null) { cursor.moveToFirst(); } return cursor; } 这里是如何写入AdapterExpensesList public […]

使用Exoplayerstream式video列表

我想实现stream式video列表应用程序。 我用RecyclerView来显示我的列表项。 项目types包括4种types:文章,状态,照片和video。 我们只应该关注videotypes。 这里是我的代码为RecyclerView的适配器: public class FollowedPostAdapter extends RecyclerView.Adapter implements OnFollowTagCallback, OnLikeCallback { private Context context; private List<PostItem> newsFeedList; public RecyclerView recyclerView; public LinearLayoutManager linearLayoutManager; private HashMap<Integer, DemoPlayer> playerList; private int visibleThreshold = 5; // private int previousTotal = 0; private int visibleItemCount, firstVisibleItem, totalItemCount; private boolean loading; private OnRecyclerViewLoadMoreListener loadMoreListener; private final String […]

RecyclerView用下面的视图滑动不检测点击

我有这样的RecyclerView行布局 <Layout> <BackgroundView> <ForegroundView> </Layout> 我正在使用ItemTouchHelper来处理前景视图上的滑动(部分) @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { adapter.onItemSwiped(viewHolder); } @Override public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { View foregroundView = ((myViewHolder)viewHolder).getForegroundView(); getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive); //getSwipeLimit() used below returns the width of the delete icon […]