有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数据未显示在RecyclerView中

我试图通过一个名为Data()的方法,以一种简单的方式创建一个带有回收器视图的项目列表,该方法有一个for循环,可以连续设置文本视图,但当我运行应用程序时,它会给我显示一个没有任何内容的白色屏幕

public class MainActivity extends AppCompatActivity {

    RecyclerView mRecyclerView;
    RecyclerAdapter mAdapter ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView =(RecyclerView) findViewById(R.id.recycler_view);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
        }

    private class RecyclerAdapter extends RecyclerView.Adapter<MyViewHolder{ 

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item,parent,false);
            MyViewHolder holder = new MyViewHolder(view);
            return holder;
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {    
           holder.Data();
        }

        @Override
        public int getItemCount() {
            return 100;
        }
    }

    private class MyViewHolder extends RecyclerView.ViewHolder{
        public TextView mmTextView ;
        private Button mButton;
        public MyViewHolder(View itemView) {
            super(itemView);
            mmTextView = (TextView) findViewById(R.id.list_text_view);
            mButton = (Button) findViewById(R.id.list_button);
        }

        private void Data (){
            for (int i =0 ;i<=100;i++){
                mmTextView.setText(String.valueOf("Text : " + i));
            }    
        }
    }

}

共 (2) 个答案

  1. # 1 楼答案

    您应该从itemView填充mmTextView,而不是从Activity。它应该是mmTextView = (TextView) itemView.findViewById(R.id.list_text_view);,因为它是holder的视图,所以可以使用holder.mmTextView.setText()onBindViewHolder()方法中获得它。在Activity的onCreate()上的Infilate按钮,还可以方便地将数据传递给它的构造函数中的适配器,并将数据绑定到onBindViewHolder()方法上的适配器,因为它知道它拥有哪些视图

  2. # 2 楼答案

    在onBindViewHolder方法中,将数据绑定到textView:

    mmTextView.mmTextView.setText("SOME STRING VALUE");