我为我的应用程序使用片段。我还使用了一个导航抽屉,它通过抽屉中的按钮打开片段。我试图用它的适配器和数组列表为我的 recyclerview 显示一些基本的图像和文本。我遇到的问题是我不知道如何修改代码以对我的片段使用 recyclerview,因为我看到的所有教程都不使用片段。以下是我的活动代码:public class secondActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {private DrawerLayout drawer;private RecyclerView mRecyclerView;private RecyclerView.Adapter mAdapter;private RecyclerView.LayoutManager mLayoutManager;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); ArrayList<exampleItemBooks> exampleList = new ArrayList<>(); exampleList.add(new exampleItemBooks(R.drawable.artofwar, "Line 1", "Line 2")); exampleList.add(new exampleItemBooks(R.drawable.aristotle, "Line 3", "Line 4")); exampleList.add(new exampleItemBooks(R.drawable.caesarbook, "Line 5", "Line 6")); exampleList.add(new exampleItemBooks(R.drawable.platorepublic, "Line 7", "Line 8")); exampleList.add(new exampleItemBooks(R.drawable.senecaletters, "Line 9", "Line 10")); exampleList.add(new exampleItemBooks(R.drawable.thehistoryofmypeople, "Line 11", "Line 12")); exampleList.add(new exampleItemBooks(R.drawable.theprince, "Line 13", "Line 14")); exampleList.add(new exampleItemBooks(R.drawable.thritysixstrategems, "Line 15", "Line 16")); exampleList.add(new exampleItemBooks(R.drawable.medidations, "Line 17", "Line 18")); mRecyclerView = findViewById(R.id.recyclerViewBooks); mRecyclerView.setHasFixedSize(false); mLayoutManager = new LinearLayoutManager(this); mAdapter = new exampleBooksAdapter(exampleList); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(mAdapter); Toolbar toolbar = findViewById(R.id.toolbarMain); setSupportActionBar(toolbar);
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
您的代码失败,因为您的 Activity 正在尝试访问RecyclerView
Fragment 布局的一部分,并且您的 Fragment 布局在您调用后无法立即使用setContentView()
(即使在您replace()
操作之后,它也只能异步使用,因为您使用commit()
而不是commitNow()
)。
片段应该(尽可能)是自包含的。这意味着如果您的 Fragment 拥有RecyclerView
,它应该负责将数据加载到其中:而不是您的 Activity。
您应该将 Activity 中与 Fragment 接触的所有代码移至RecyclerView
Fragment - 理想情况下,移动到诸如 之类的方法中onViewCreated()
,该方法使您可以访问已膨胀的视图,onCreateView()
并且是调用findViewById()
和获取RecyclerView
.
添加回答
举报
0/150
提交
取消