我有一个基本的自定义View,长这样:
public class CustomView extends RelativeLayout {
private User user;
private ImageView profilePicture;
public CustomView(Context context) {
super(context);
init();
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
inflate(getContext(), R.layout.custom_layout, this);
profilePicture = (ImageView) findViewById(R.id.profilePicture);
// ACCESS USER MODEL HERE
// e.g. user.getUsername()
}
}
正如您所看到的,我想在视图中访问用户数据(即:user.getUsername()
)。
我还需要能够在RecyclerView
适配器中使用自定义视图。
这是我当前适配器的样子:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<User> userData;
public MyAdapter(Context context, List<User> userData) {
this.context = context;
this.userData = userData;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View v) {
super(v);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
// HOW TO INFLATE THE CUSTOM VIEW?
// ViewHolder viewHolder = new ViewHolder(customView);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// ANYTHING HERE?
}
@Override
public int getItemCount() {
return userData.size();
}
}
我如何在适配器中填充自定义视图?
此外,我应该在onBindViewHolder()
中添加任何内容吗?
注意:我必须使用自定义视图,因为我在不同的适配器下使用此视图(即:不仅仅是这个RecyclerView
适配器)。
CustomView
是通过代码实例化而不是通过XML实例化,所以无法在XML中定义大小属性。因此,在实例化后需要通过编程方式进行调整大小。”那么这种方式呢:https://dev59.com/oV4b5IYBdhLWcg3whB6V#38690715? - drmrbrewerViewHolder
中可能有哪些尺寸值是可能/可接受的。我猜我在上面的答案中放置的尺寸约束纯粹基于我认为可能是最合适的。例如,如果子项不如父项宽,我不知道事物会如何运作。 - Alex Peters