首页 文章

RecyclerView在布局更改时无法正常工作

提问于
浏览
-1

我有一个简单的回收站视图,包含相对布局 . 除了在 OnBindViewHolder(); 处添加文本视图之外,布局目前没有任何内容 . 列表似乎在纵向模式下正常工作但是当我切换到横向并尝试滚动时,文本视图重叠并创建一个奇怪的外观 .

In landscape mode after scrolling
在横向模式下
Appears normal in portrait mode
在纵向模式下 . 码:

@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    RelativeLayout v = (RelativeLayout) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.recycler_layout,parent,false);
    context = parent.getContext();

    ViewHolder vh = new ViewHolder(v);

    return vh;
}

@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
    TextView tv = new TextView(context);
    tv.setText(mDataSet.get(position));
    tv.setTextSize(20);
    tv.setPadding(5,20,5,20);
    holder.mLayout.addView(tv);
}

以上是我的适配器,下面是我打电话的活动 -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_to_do_list);
    mRecyclerView = findViewById(R.id.mainList);
    mLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
    mRecyclerView.setLayoutManager(mLayoutManager);
    mAdapter = new MyAdapter(dataset);
    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.refreshDrawableState();
    //testing
    for(int i=0;i<20;i++)
        dataset.add("Data "+(i+1));
}

我已经尝试在配置更改上执行 refreshDrawableState(); 并将配置更改添加到清单 . 徒劳无功 .

2 回答

  • 3

    将文本视图作为列表项布局的一部分 .

    class ViewHolder{
            TextView tv;
            ViewHolder(View v){
                tv = (TextView) v.findViewById(<textview_id>);
           }
    }
    

    然后更改 onBindViewHolder() 中的代码

    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        holder.tv.setTextSize(20);
        holder.tv.setPadding(5,20,5,20);
        holder.tv.setText(mDataSet.get(position));
    }
    

    希望这会有所帮助 .

  • 1

    不要创建新的TextView并在 onBindViewHolder 中使用 addView 方法 . 在每个ViewHolder实例上将多次调用此回调,因此将添加多个TextView .

    您的TextView应该是 recycler_layout 的一部分 .

相关问题