我有ListView
这样填充:
ArrayList<MyFullDataClass> myFullDataClassList = Utilities.getDataFromSQLite(getActivity()); // populate list from SQLite
ArrayAdapter<MyFullDataClass> adapter = new ArrayAdapter<MyFullDataClass>(getActivity(), android.R.layout.simple_list_item_1, MyFullDataClassList);
setListAdapter(adapter);
MyFullDataClass包含许多内容:名称,地址,电话,电子邮件,网站等。因此,列表的每一行都包含所有这些信息。这有点忙。我想这样做,以便列表中的每一行只包含名称和电子邮件(然后触摸该行将弹出MyFullDataClass中的所有信息)
我可以通过创建一个类来调用它,调用它MyPartialDataClass,它只包含名称和电子邮件的字段,然后创建一个ArrayList<MyPartialDataClass>
并将数据从myFullDataClassList复制到myPartialDataClassList并使用此部分类作为适配器。 (然后单击一行时,使用myFullDataClassList。)
不是特别优雅,但它会起作用。
有更好的方法吗?
答案 0 :(得分:1)
我认为不需要有两个单独的类,这些类最终会保存相同的信息。
有一个班级来保存必要的信息是好的,除非你绝对需要提高两个班级的效率。我要做的是让你的适配器获取MyFullDataClass
对象列表,但只用名称和电子邮件填充视图。
从那里,您可以在适配器上侦听onClick
事件,并将与所单击视图关联的MyFullDataClass
对象传递给一个片段,该片段将显示与{{{{}相关的其他信息。 1}}对象(即除了名称和电子邮件之外,片段还会显示地址,电话等)。
您不会在数据库中创建两个单独的表来保存相同信息的一部分。您可以从每个条目中选择所需的行/属性。同样的概念适用于此,IMO。