目前我正在寻找一个解决方案,用来自3个不同SQLite表的内容填充ListView。点击时,每个ListView项(行)应显示相应的详细视图(Activity),该视图基于三个xml布局之一。
有什么建议吗?
编辑:
目前我为一种Object / SQLite表解决了这个问题。 将SQLite表中的内容提取到ArrayList中,并通过putExtra将其传递给详细活动,该活动处理设置文本/内容。
使用与listView索引匹配的arrayList索引来解决listView条目的匹配和启动相应的详细信息视图。
我不确定,如果这是一个合适的解决方案。我想这不是......
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent typeOne_details_intent = new Intent(this, TypeOneDetailActivity.class);
typeOne_result = new TypeOneResult();
typeOne_result = typeOneResult_arr.get(position);
typeOne_details_intent.putExtra("result", TypeOneResult);
startActivity(typeOne_details_intent);
}
如何解决此问题以添加typeTwoDetails并在listview和详细视图之间获得更好的匹配?
答案 0 :(得分:0)
您可以使用自定义适配器来确定要启动的Activity,设置自定义行视图等。一种方法,您可以创建一个行对象接口,并检查对象类型以确定行和集的布局诸如onClick侦听器和要启动的Activity之类的内容。
下面的简单示例:
public class CustomAdapter extends BaseAdapter<ListObjectInterface>{
...
ListObjectInterface data[];
....
public CustomAdapter(Context context, int layoutResourceId, ListObjectInterface[] data) {
...
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
... /* do things. such as check if instance is present, etc. */
ListObjectInterface object = data[position];
if (object instanceOf TypeA) {
row = inflater.inflate(layoutResourceIdA, parent, false);
...
... /* get View objects and set Button listener to launch Activity A */
} else if (object instanceOf TypeB) {
row = inflater.inflate(layoutResourceIdB, parent, false);
...
... /* get View objects and set Button listener to launch Activity B */
} ... /* etc */
... /* more logic */
return row;
}
}