1.TabLayout
- tab1 (Fragment1)
- tab2 (Fragment2)
- tab3 (Fragment3)
* RecyclerView + CardView (OnClick)
Run Code Online (Sandbox Code Playgroud)
上 CardView ClickListner上打开tab3中的另一个片段.那么如何在tab3中打开片段.
错误在于getFragmentManager():
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
而不是这样,我试过:
FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
FragmentTransaction transaction = itemview.getContext().getFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
但错误并未解决.
这是我的代码:
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
List<NatureItem> mItems;
private int lastPosition = -1;
Context context;
TaskFragment main;
public CardAdapter(Context context,TaskFragment ma)
{
this.context=context;
main=ma;
}
public CardAdapter() {
super();
mItems = new ArrayList<NatureItem>();
NatureItem nature = new NatureItem();
nature.setName("The Paris Attack 2015");
nature.setDes("Lorem ipsum …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewholder android-recyclerview
我正在尝试在RecyclerView中使用多个ViewHolders,以便在运行时交换这些视图.我创建了两个扩展RecyclerView.ViewHolder的类:
MenuItemViewHolder
public class MenuItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView menuItemText;
public ImageView menuItemPhoto;
public RecyclerViewAdapter rva;
public MenuItemViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
rva = caller;
menuItemText = (TextView) itemView.findViewById(R.id.grid_text);
menuItemPhoto = (ImageView) itemView.findViewById(R.id.grid_image);
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "Clicked Position = " + getPosition(), Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
SelectedItemViewHolder
public class SelectedItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView menuItemText;
public ImageView menuItemPhoto;
public RecyclerViewAdapter rva;
public SelectedItemViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
menuItemText = (TextView) …Run Code Online (Sandbox Code Playgroud) android android-viewholder staggeredgridlayout android-recyclerview recyclerview-layout
我的问题是:我在RecyclerView内的其中一个视图上发生了视频流.
当用户滚动时,视图将被回收,其他摄像头会在该回收的视图持有者上开始自己的流式传输.这对用户界面不利,因为流式处理需要几秒钟才能启动.
我怎么能对RecyclerView说:"嘿嘿回收器,请不要回收那个确切的位置x并给出那个位置总是与你第一次给出的相同的观察者,而不是随机的一个"?
请有人帮帮我=(
android recycle android-layout android-viewholder android-recyclerview
我正在使用带有ImageView和TextView的单行布局的RecyclerView.
我想为View实现一个OnClickListener,而不是为单独的ViewHolder对象实现.如何在适配器中获取视图的位置?
现在我正在删除点击的评论,但我无法选择点击的视图.我在适当的行中添加了一个TODO.
public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.ViewHolder> {
/** List of Comment objects */
private List<Comment> mCommentList;
/** Database with Comment objects */
private CommentsDataSource mDataSource;
/**
* Construcutor for CommentAdapter
*
* @param commentList List of Comment objects
* @param dataSource Database with Comment objects
*/
public CommentAdapter(List<Comment> commentList, CommentsDataSource dataSource) {
this.mCommentList = commentList;
this.mDataSource = dataSource;
}
/**
* Add Comment objects to RecyclerView
*
* @param position The position where the Comment object is added …Run Code Online (Sandbox Code Playgroud) java android android-view android-viewholder android-recyclerview
我正在动态地将视图添加到我的项目中RecyclerView.这些添加的视图应该只与它们被添加到的项目相关,但是当我滚动时我遇到了问题.它似乎View被回收并加载了一个新项目,但那些以前添加的视图仍然存在,只是现在在错误的项目上.
我假设它只是因为ViewHolder它被重用,所以添加的项目在加载时会再次出现一个新项目.
怎么会解决这个问题呢?
我说的活动必须展现出RecyclerView通过填充CardViews作为项目.我的目标是在每个CardView中显示一个RecyclerView.
这是我的Activity的基本xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ConjActivity" >
<android.support.v7.widget.RecyclerView
android:id="@+id/conjCardList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的CardView的RecyclerView的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_analysis"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:padding="5dp"
card_view:cardCornerRadius="5dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v7.widget.RecyclerView
android:id="@+id/item_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingLeft="@dimen/activity_horizontal_margin" >
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
所以,我大胆地通过实现两个RecyclerView.Adapters来实现我的第一次尝试,一个用于(让我们称之为)"主"RecyclerView,一个用于每个CardView中的单个:
以下是两段代码:
"Main"RecyclerView(带ViewHolders):
public class ConjCardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private static Context context;
private LinearLayoutManager llm;
private static ConjFormAdapter formAdapt;
private ArrayList<String> adapterList;
private …Run Code Online (Sandbox Code Playgroud) android android-viewholder android-cardview recycler-adapter android-recyclerview
我目前正在开发一个使用RecyclerView的应用程序.
在查看LogCat时,我注意到onCreateViewHolder在实例化后被调用了两次.
09-22 05:22:55.209 V/Adapter? Construct
09-22 05:22:55.213 V/Adapter? onCreateViewHolder
09-22 05:22:55.224 V/Adapter? onBindViewHolder
09-22 05:22:55.240 V/Adapter? onCreateViewHolder
09-22 05:22:55.247 V/Adapter? onBindViewHolder
Run Code Online (Sandbox Code Playgroud)
此外,onBindViewHolder被调用了两次,但我知道每当项目被回收时都会调用它.
但我认为onCreateViewHolder只需调用一次即可.
这种异常行为吗?如果是这样,怎么解决?
我一直在为我的Android应用程序使用SwipeableRecyclerView来为我的recyclerView启用滑动.RecyclerView包含cardViews列表.
我试图为卡片实现撤消功能,当向左滑动时会被删除(第一次滑动显示撤消,下一次滑动触发器删除)
我正在尝试以下代码(部分工作,我猜)
SwipeableRecyclerViewTouchListener srvTouchListner = new SwipeableRecyclerViewTouchListener(rvTimerList,
new SwipeableRecyclerViewTouchListener.SwipeListener(){
@Override
public boolean canSwipe(int i) {
return true;
}
@Override
public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] ints) {
for(int position : ints){
View view = recyclerView.getChildAt(position);
if (view.getTag(R.string.card_undo) == null) {
if(viewStack == null) {
saveToViewStack(position, view);
final ViewGroup viewGroup = (ViewGroup) view.findViewById(R.id.time_card2);
view.setTag(R.string.card_undo, "true");
viewGroup.addView(view.inflate(TimerSummary.this, R.layout.timeslot_card_undo, null));
}
} else {
Log.d(TAG, "Removing Item");
deleteTimeSlot(timerInstanceList.get(position));
Toast.makeText(TimerSummary.this, "Deleted!", Toast.LENGTH_SHORT).show();
timerInstanceList.remove(position);
finalSummaryAdapter.notifyItemRemoved(position);
}
}
finalSummaryAdapter.notifyDataSetChanged();
}
@Override
public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] …Run Code Online (Sandbox Code Playgroud) 在RecyclerView.Adapter中使用以下代码:
onBindViewHolder(VH holder, int position){
holder.itemView.setAlpha(0.5f);
}
Run Code Online (Sandbox Code Playgroud)
第一次显示该项目时不会显示Alpha.但是,如果您离开屏幕并返回,则会准确显示Alpha.正在设置该值,但在再次显示之前不会显示该值.有关如何让setAlpha()在首次查看时生效的任何想法.
android android-layout android-viewholder android-recyclerview
我正在尝试创建一个显示TextView的简单RV.这是我的适配器:
public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.ViewHolder> {
private String[] mDataset;
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView mTextView;
public ViewHolder(TextView v) {
super(v);
mTextView = v;
}
}
public MyRvAdapter(String[] myDataset) {
mDataset = myDataset;
}
@NonNull
@Override
public MyRvAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.text_row_item, parent, false);
TextView userNameInList= v.findViewById(R.id.display_name);
ViewHolder vh = new ViewHolder(userNameInList);
return vh;
}
@Override
public void …Run Code Online (Sandbox Code Playgroud)