我对应用程序开发很新,我想知道一些关于ListViews适配器的好设计模式。
我没有任何特定代码(至少不是简单明了的代码)来提出问题,但无论如何,情况就是这样。
我有一个活动,我想在其中显示任何书籍列表。 我为此创建了一个CustomAdapter,基于名为" row.xml的布局。"此xml包含TextView和ImageView。 我在此活动中创建了我的CustomAdapter,如下所示:
customAdapter = new ListAdapterFullList(this, R.layout.row, bookList.getList());
现在我想重复使用此活动来显示书籍列表,但这次布局需要不同!它应该是" row_alt.xml"。此列表现在需要显示TextView和RatingBar,而不是TextView和ImageView。
我面临的问题是,显然我想重复使用Activity(因为我需要显示的内容仍然是书籍列表,所有其他行为都是相同的),但我不知道如何处理适配器。我不能用这个:
customAdapter = new ListAdapterFullList(this, R.layout.row_alt, bookList.getList());
因为没有实现ListAdapterFullList来处理RatingBar而不是ImageView。
我如何绕过这个问题?我是否需要创建一个不同的适配器来显示此布局?如果是这样,那么我也需要修改我现有的Activity,虽然我不知道如何。
顺便说一下,我读了很多关于ListView中每行需要使用不同布局的问题,但这不是我正在努力解决的问题。我想重用适配器的布局完全不同的适配器。行本身总是相同的。
感谢您的帮助,并对可能令人困惑的问题道歉。您可以随时询问更多信息!
答案 0 :(得分:0)
如果row.xml和row_alt.xml只有两个不同的小部件,我建议你创建两个不同的Adapter。如果这两个适配器之间确实存在共同的行为,则创建一个将实现常见行为的父类,并使两个适配器扩展此父类。然后每个Adapter实现自己的[getView()](https://developer.android.com/reference/android/widget/Adapter.html#getView(int,android.view.View,android.view.ViewGroup))方法。
然后进一步优化使用ViewHolder模式。
我还建议您查看RecyclerView这是ListView的新版本,并且不需要ViewHolder模式