Java 在多个适配器中使用自定义视图
我有一个自定义视图,需要能够在两个不同的适配器中使用 这是自定义视图的布局(Java 在多个适配器中使用自定义视图,java,android,android-layout,android-recyclerview,android-adapter,Java,Android,Android Layout,Android Recyclerview,Android Adapter,我有一个自定义视图,需要能够在两个不同的适配器中使用 这是自定义视图的布局(custom\u view.xml): 现在,我需要在两个不同的适配器中使用自定义视图 我需要在中使用自定义视图的第一个适配器是一个常规的RecyclerView适配器,它当前的外观如下: public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { private static final St
custom\u view.xml
):
现在,我需要在两个不同的适配器中使用自定义视图
我需要在中使用自定义视图的第一个适配器是一个常规的RecyclerView
适配器,它当前的外观如下:
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private static final String TAG = "CustomAdapter";
private Context context;
private List<User> userData;
public CustomAdapter(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) {
// TODO: WHAT DO I PUT HERE?
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// TODO: WHAT DO I PUT HERE?
}
@Override
public int getItemCount() {
return userData.size();
}
}
以下是AndroidTreeView库的参考
我应该在上面的方法中添加什么
谢谢。对于RecyclerView,在您的onCreateViewHolder()中,我会放以下内容:
@覆盖
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutFlater.from(parent.getContext()).flate(R.layout.custom_视图,parent,false);
返回新的CustomViewHolder(视图);
}
然后,要将userData中的数据绑定到您的ViewHolder,请将其设置为onBindViewHolder():
当然,这意味着您需要先在ViewHolder中找到TextView:
class CustomViewHolder extends RecyclerView.ViewHolder {
TextView textView;
CustomViewHolder(View v) {
super(v);
textView = (TextView) v.findViewById(R.id.textView);
}
}
至少我认为这是使用RecyclerView和ViewHolder的方法,我认为您可能希望将CustomView类中的代码(如init()移到ViewHolder中。我已经在custom view类中设置了所有textview文本,所以对我来说执行
setText()没有意义
再次出现在ViewHolder中。但我认为ViewHolder是您应该为项目/行设置视图的地方?在每个适配器中执行两次setText()
,如果我可以在自定义视图类中执行一次,则没有意义。我不明白您试图完成什么;你能把它弄清楚一点吗?我有一个自定义视图,在那里我设置了所有的数据。我想在两个不同的适配器中使用这个自定义视图(如上所示)。我该怎么做?
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private static final String TAG = "CustomAdapter";
private Context context;
private List<User> userData;
public CustomAdapter(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) {
// TODO: WHAT DO I PUT HERE?
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// TODO: WHAT DO I PUT HERE?
}
@Override
public int getItemCount() {
return userData.size();
}
}
public class CustomTreeAdapter extends TreeNode.BaseNodeViewHolder<CustomTreeAdapter.TreeItem> {
public CustomTreeAdapter(Context context) {
super(context);
}
@Override
public View createNodeView(TreeNode node, TreeItem value) {
// TODO: WHAT DO I PUT HERE?
}
public static class TreeItem {
// TODO: WHAT DO I PUT HERE?
}
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
holder.textView.setText(userData.get(position).getName());
}
class CustomViewHolder extends RecyclerView.ViewHolder {
TextView textView;
CustomViewHolder(View v) {
super(v);
textView = (TextView) v.findViewById(R.id.textView);
}
}