2011-04-12 45 views
4

我正在開發一個android應用程序,現在我已經實現了一個ListView,它顯示了連接到數據庫的課程列表。ListView和隱藏的Id。怎麼可能?

我想知道如何用名稱包含一個隱藏的ID(來自數據庫),以便一旦用戶點擊元素,應用程序就會進入所選課程的相對視圖。

如何在course-view導航過程中維護id?

此刻我的代碼只需加載從DB課程的名稱,並在列表視圖設置:

ArrayAdapter<String> result = new ArrayAdapter<String>(CourseActivity.this, android.R.layout.simple_list_item_1); 

for (CourseRecord c : get()) 
result.add(c.getFullname()); 

lv.setAdapter(result); 

很明顯,我能夠做的也c.getid(),但我不t把id放在哪裏。

非常感謝。

P.S .:也許有人也有一個非常漂亮的列表視圖圖形?

回答

2

您可以將id存儲在隱藏的TextView中。在列表項XML中,向TextView添加'android:visibility =「gone」'。同樣在點擊處理程序中,您可以從textview中讀取id。

1

您還可以使用View的setTag(Object object)方法存儲id。使用getTag()方法從該視圖中提取該ID。

10

像這樣改變你的陣列適配器。

private ArrayAdapter<String> result = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1){ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.row, null); 
     } 
     v.setTag(getMyIdForPosition(position)); 
     return convertView; 
    } 
}; 

,並有一個項目單擊處理程序收到所選擇的IDS

private OnItemClickListener itemClickedHandler = new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position, long id) 
    { 
     String myId = (String)v.getTag(); 
     doYourStuff(myId); 
    } 
    }; 

聽衆分配到列表

myList= (ListView)findViewById(R.id.history); 
myList.setOnItemClickListener(itemClickedHandler); 
+0

getMyIdForPosition,這是什麼?我必須定義? – 2016-01-03 19:24:27

+0

這是OP在問題中提到的ID。 – Samuel 2016-01-05 06:02:49