当View只是一个简单视图使用“new TextView”时,如何改为“查看inflate(int资源,ViewGroup root,boolean attachToRoot)”方法?

问题描述 投票:1回答:1

当我使用RecyclerView的Adapter来创建ViewHolder时,视图只是一个TextView,所以我不想将LayoutInflate.inflate()与layout.xml文件一起使用。因此,我通过构造函数创建一个TextView实例,但TextView没有显示任何内容。现在我想知道是否有办法解决这个问题?

  1. 我在parent.addView(textview)之前写了return,但它崩溃了。
  2. 当我写一个layout.xml并使用LayoutInflate.from().inflate()时,效果很好。
    @Override
    public GeekSearchWordItemAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        TextView textView = new TextView(mActivity);
        textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, R.dimen.text_size_medium);
        textView.setTextColor(ContextCompat.getColor(mActivity, R.color.text_c6));
        return new ViewHolder(textView);
    }
    ...
    @Override
    public void onBindViewHolder(@NonNull GeekSearchWordItemAdapter.ViewHolder holder, int position) {
        LevelBean bean = LList.getElement(mDatas, position);
        if (bean != null) {
            holder.mTxtName.setText(bean.name);
        }
    }
    ...
    static class ViewHolder extends RecyclerView.ViewHolder {
        private TextView mTxtName;

        public ViewHolder(View itemView) {
            super(itemView);
            mTxtName = (TextView) itemView;
        }
    }
android android-recyclerview android-viewholder
1个回答
0
投票

在onCreateViewHolder()中尝试将布局参数添加到您在那里创建的TextView。

RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(
                 RecyclerView.LayoutParams.WRAP_CONTENT, RecyclerView.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(params);
© www.soinside.com 2019 - 2024. All rights reserved.