当前位置: 首页 > 知识库问答 >
问题:

指定的子级已有父级,正在创建回收器视图

元昊苍
2023-03-14

有人能帮我吗?我不知道为什么我会犯这个错误。

public class TenantAdapter extends RecyclerView.Adapter<TenantAdapter.TenantViewHolder> {

    private List<Tenant> values;
    private final OnItemClickListener listener;

    public TenantAdapter (List<Tenant> values, OnItemClickListener listener) {
    this.values = values;
    this.listener = listener;
    }

    public interface OnItemClickListener {
    void onItemClick(Tenant tenant);
    }


    static class TenantViewHolder extends RecyclerView.ViewHolder {

    TextView nameTextView;

    TenantViewHolder(TextView itemView) {
        super(itemView);
        nameTextView = itemView;
    }

    void bind(final Tenant tenant, final OnItemClickListener listener){
        nameTextView.setText(tenant.getName());
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onItemClick(tenant);
            }
        });
    }
    }


    @Override
    public TenantViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tenant, parent, false);
    TextView nameTextView = (TextView) rowView.findViewById(R.id.item_tenant_name);
    TenantViewHolder tenantViewHolder = new TenantViewHolder(nameTextView);
    return tenantViewHolder;
    }

    @Override
    public void onBindViewHolder(TenantViewHolder holder, int position) {
    holder.bind(values.get(position), listener);
    }

    @Override
    public int getItemCount() {
    return values.size();
    }

}

public class TenantActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tenant);
    recyclerView = (RecyclerView) findViewById(R.id.activity_tenant_recycler_view);
    recyclerView.setHasFixedSize(true);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    List<Tenant> values = new ArrayList<>();
    Tenant temp = new Tenant();
    temp.setName("Gurdwara Guru Nanak Mission Sewa Society");
    values.add(temp);
    adapter = new TenantAdapter(values, new TenantAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(Tenant tenant) {
            TenantActivity.this.startActivity(new Intent(TenantActivity.this, HomeActivity.class));
        }
    });
    recyclerView.setAdapter(adapter);
    }

}

共有1个答案

葛宪
2023-03-14

您在ViewHolder的构造函数中传递子TextView,这是不对的。您应该传递父视图并在构造函数中展开它。

static class TenantViewHolder extends RecyclerView.ViewHolder {

    TextView nameTextView;

    TenantViewHolder(View itemView) {
        super(itemView);
        nameTextView = (TextView) itemView.findViewById(R.id.item_tenant_name);
    }
}

在您的适配器中,只需直接传递膨胀视图。

@Override
public TenantViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tenant, parent, false);
    TenantViewHolder tenantViewHolder = new TenantViewHolder(rowView);
    return tenantViewHolder;
}
 类似资料:
  • 问题内容: 在我的应用中,我必须经常在两种布局之间切换。错误在下面发布的布局中发生。 第一次调用布局时,没有发生任何错误,一切都很好。然后,当我调用不同的布局(空白),然后再次调用我的布局时,出现以下错误: 我的布局代码如下所示: 我知道之前曾有人问过这个问题,但对我来说没有帮助。 问题答案: 错误消息说明你应该做什么。

  • 我在垂直回收视图中使用水平回收视图开发一个片段(像谷歌应用商店)。 当我从父循环视图notifyDataSetChanged时,子循环视图将失去位置,因为我认为setAdapter是在onBindViewHolder中调用的。此外,当我在第一个水平循环视图中滚动到第5个位置时,如果我向下滚动并返回,我会松开第5个位置。 我尝试使用RecyCL View.scrollToPosition(),但那不

  • 我正在使用3个标签构建一个像WhatsApp一样的应用程序,每个标签都有一个< code >片段。在我的第一个< code >片段中,我有一个< code > recycle view 。 赢取一套SectionsPager适配器,开始宽度Recy,如下图所示: 它给了我这个错误: E/AndroidRuntime:致命异常:主进程:com.deraah.mohamed。deraahpro,PID

  • 我试图做一个问答应用程序,在那里你点击加号按钮来添加一个问答。屏幕上弹出一个按钮,你可以点击它来播放或编辑测验。当我点击新创建的按钮一次很好,但第二次点击它时,应用程序崩溃了。有人知道我如何专门修复这个错误吗? 2020-12-28 13:48:47.521 266 48-26648/com.example.k_ari E/AndroidRuntime:致命异常:main process:com.

  • 我正在尝试将数据提供给我的listView,单击FAB时,它会显示一个对话框,其中包含一个editText和两个按钮。在第一次,它允许我向ListView提供数据。但是当我第二次尝试时,它会显示错误: FATAL EXCEPTION: main Process:com.example.app.wounderlist.wounderlist.HomeFragment, PID: 3790 1.onC

  • 问题内容: 我想用以下结构构建一个站点header-view,main-view,footer- view。因此,我定义了一个包含页眉和页脚的根路由。root的子代将是我的全部站点。在这些站点中,我将拥有更多的嵌套视图。 在下面的代码中,它确实显示了页眉,但未显示页脚和主视图。一旦删除父级继承,它将显示主视图,但不显示页眉和页脚。 的HTML JS 问题答案: 有一个与正在工作的矮人有关的链接。