2013-04-18 65 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