2013-04-18 101 views
0

当前我正在寻找一个解决方案来填充ListView与来自3个不同的SQLite表的内容。点击时,每个ListView项目(行)应该显示相应的详细视图(活动),这是基于三个xml布局之一。从多个sqlite表填充ListView及其详细视图

有什么建议吗?

编辑:

目前我解决了这一类型的对象/ SQLite表。 从SQLite表获取内容到一个ArrayList中,并通过putExtra将其传递给详细信息活动,该活动处理设置文本/内容。

listView条目的匹配和启动相应的详细视图是通过与listView索引匹配的arrayList索引解决的。

我不确定,如果这是一个合适的解决方案。我想这是不是...

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和根据的DetailView之间的更好的匹配?

+1

给我们一些更多的细节。如果我明白了,你需要在你的列表视图中显示来自3个不同表格的数据。那么,当一行被点击时,这应该会打开一个新的活动? –

+0

你尝试过什么吗?请告诉我们它会更有帮助 –

+0

没错。例如:单击行#1 - >打开A类新活动并显示相应的详细信息。点击第3行 - >打开C类新活动,并显示相应的细节。这是可以理解的吗? (我不是母语:/) – Kody

回答

0

您可以使用自定义适配器来确定要启动的Activity,设置自定义行视图等。一种方法是,您可以创建一个行对象接口,并检查对象类型以确定该行的布局,以及设置诸如onClick监听器之类的东西以及启动哪个活动。

快速下面的例子:

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; 
} 
} 
+0

谢谢!我改了一下代码。我正在检查onItemClick()中的实例类型。 – Kody