来自https://developer.android.com/preview/material/ui-widgets.html
当我们创建时,RecyclerView.Adapter
我们必须指定ViewHolder
将与适配器绑定.
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private String[] mDataset;
public MyAdapter(String[] myDataset) {
mDataset = myDataset;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(TextView v) {
super(v);
mTextView = v;
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.some_layout, parent, false);
//findViewById...
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(mDataset[position]);
}
@Override
public int …
Run Code Online (Sandbox Code Playgroud) 可以在新的RecyclerView中使用可扩展列表项吗?像ExpandableListView一样?
我在应用程序创建的底部有3个按钮,我只是尝试使用一些股票Android图标而不是文本或两者的组合.有andoid:drawableStart / top / bottom / etc
命令,但我只是希望这些图标显示在中间.似乎没有简单的解决方案吗?这是我正在使用的:
<RelativeLayout
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"
android:background="@drawable/calm"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".PiktuurMain" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >
<Button
android:id="@+id/takepic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/round" />
<Button
android:id="@+id/editpic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1"
android:background="@drawable/round" />
<Button
android:id="@+id/sharepic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/round"
android:drawableStart="@android:drawable/ic_dialog_email" />
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在recyclerview中扩展cardviews.我让扩展部分工作,但是当添加转换时,一些视觉错误开始发生.当没有屏幕外项目时,转换工作正常,但当我向Recyclerview添加超过(在我的情况下)4个项目时,它开始发生.
当禁用过渡动画时,cardview扩展可以正常使用4个以上的项目.我认为问题与职位变化有关,但我无法找到解决问题的办法.
我用来实现cardview扩展的指南可以在这里找到:https://stackoverflow.com/a/38623873/6673949
还有我完整的recyclerview适配器
public class BasketRecyclerAdapter extends RecyclerView.Adapter<BasketRecyclerAdapter.CustomViewHolder> {
private String letter;
private Context mContext;
private ColorGenerator generator = ColorGenerator.MATERIAL;
private List<Basket> baskets;
private int mExpandedPosition = -1;
private RecyclerView r1;
public BasketRecyclerAdapter(Context context, List<Basket> baskets, RecyclerView r1) {
this.mContext = context;
this.baskets = baskets;
this.r1 = r1;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.basket_menu_item, null);
CustomViewHolder viewHolder = new CustomViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(final BasketRecyclerAdapter.CustomViewHolder …
Run Code Online (Sandbox Code Playgroud) 如果我展开recyclerview中的任何项目它扩展正常,但当我向下滚动recylerview我发现其他项目也扩大,由于回收它采取扩大的尺寸而不是原来的
public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.MyViewHolder> implements View.OnClickListener {
private LayoutInflater inflater;
private Context mcontext;
private int mOriginalHeight = 0;
private boolean mIsViewExpanded = false;
public FeedAdapter(Context context) {
inflater = LayoutInflater.from(context);
mcontext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = inflater.inflate(R.layout.custom_row, viewGroup, false);
MyViewHolder holder = new MyViewHolder(view);
holder.frame.setOnClickListener(this);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder myViewHolder, int i) {
}
@Override
public int getItemCount() {
return 100;
}
@Override
public void onClick(final …
Run Code Online (Sandbox Code Playgroud)