我正在尝试刷新特定项目RecyclerView
.
故事:每当用户点击项目时,它都会显示AlertDialog
.用户可以通过单击确定按钮键入一些文本.我想在这个项目中显示这个文本并显示不可见ImageView
- 在XML和适配器中声明ViewHolder
-
我在AlertDialog
Positive Button中使用此函数来更新项目:
private void updateListItem(int position) {
View view = layoutManager.findViewByPosition(position);
ImageView medicineSelected = (ImageView) view.findViewById(R.id.medicine_selected);
medicineSelected.setVisibility(View.VISIBLE);
TextView orderQuantity = (TextView) view.findViewById(R.id.order_quantity);
orderQuantity.setVisibility(View.VISIBLE);
orderQuantity.setText(quantity + " packet added!");
medicinesArrayAdapter.notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码不仅改变了传递位置的itemView,还改变了其他一些itemView(s)!
如何通过单击更改特定的itemView?
android android-adapter recycler-adapter android-recyclerview
android file-dependancy android-support-library android-gradle-plugin android-recyclerview
正如我们所看到的,RecyclerView比ListView更有效,所以我更喜欢在我的项目中使用它.但是最近我把它放在我的自定义ViewGroup中时遇到了麻烦.RecyclerView很容易在xml中设置滚动条,如下所示:
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
但我真的找不到任何方法在RecyclerView的代码中设置滚动条,我试过的是:
mRecyclerView.setVerticalScrollBarEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后我在Android的文档中看到了这一点.
所以我试着制作自己的LayoutManager并覆盖我认为需要的功能.但最后我失败了.所以任何人都可以告诉我如何制作自己的LayoutManager或者只是向我展示其他解决方案.谢谢!
我正在替换我ListView
的RecyclerView
,列表显示确定,但我想知道如何获得点击项目及其位置,类似于OnItemClickListener.onItemClick(AdapterView parent, View v, int position, long id)
我们使用的方法ListView
.
谢谢你的想法!
可以在新的RecyclerView中使用可扩展列表项吗?像ExpandableListView一样?
如何使用Espresso单击RecyclerView项目中的特定视图?我知道我可以点击位置0处的项目:
onView(withId(R.id.recyclerView))
.perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
但是我需要点击该项目内的特定视图而不是项目本身.
提前致谢.
- 编辑 -
更确切地说:我有一个RecyclerView(R.id.recycler_view
)项目是CardView(R.id.card_view
).在每个CardView内部,我有四个按钮(除其他外),我想点击一个特定的按钮(R.id.bt_deliver
).
我想使用Espresso 2.0的新功能,但我不确定是否可行.
如果不可能,我想使用这样的东西(使用托马斯凯勒代码):
onRecyclerItemView(R.id.card_view, ???, withId(R.id.bt_deliver)).perform(click());
Run Code Online (Sandbox Code Playgroud)
但我不知道该在问号上放些什么.
我正在尝试使用新的RecyclerView,每当我尝试运行它时,我的应用程序立即崩溃.它为我提供了尝试访问方法的NullPointerException android.support.v7.widget.RecyclerView
.我看过其他帖子,看到大多数人都没有,compile 'com.android.support:recyclerview-v7:+'
但我尝试了,但根本没用.目前还不确定该做什么,任何帮助都将不胜感激.这里的错误日志:(我会张贴一张图片,但我还没有10个代表)
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:17430)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430) …
Run Code Online (Sandbox Code Playgroud) java android android-layout android-5.0-lollipop android-recyclerview
我在RecyclerView
里面使用NestedScrollView
,它的工作原理.但是当我使用RecyclerView
内部LinearLayout
或其他东西时,它会根据手势以不同的速度滚动.滚动听手势,如果我只滑了一下,那么滚动一点,如果我快速向上滑动,那么它滚动得非常快.现在我的问题是RecyclerView
内部NestedScrollView
肯定滚动但快速滚动不起作用.但是我快速或慢速滑动,RecyclerView
或NestedScrollView
只滚动一点点.
如何使滚动视图中的内部NestedScrollView
或RecyclerView
内部以各种速度滚动?
如何实现上下文菜单RecyclerView?
显然调用registerForContextMenu(recyclerView)
不起作用.我是从片段中调用它的.有没有人有成功实现这个?
尝试使用支持库中的新RecyclerView.我使用SDK管理器下载了支持库的20更新.
我已经将jar文件添加到libs文件夹中 - 并添加到构建路径 - 使用RecyclerView没有运气.
根据Android Developer的API尝试使用gradle依赖- 不确定这是否适合查看 - 此页面更多与AndroidTV相关:
com.android.support:recyclerview-v7:20.0.+
Run Code Online (Sandbox Code Playgroud)
无法同步项目.
有任何想法吗?