数据未在RecyclerView中显示

时间:2017-09-18 20:48:27

标签: java android android-recyclerview

我试图通过制作一个名为Data()的方法以简单的方式制作带有Recycler View的项目列表,该方法有一个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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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