2012-04-13 80 views
0

我產生了ListView所看到如下從按鈕獲得點擊每一行中的ListView

我沒有足夠的代表,發佈圖片,你將不得不破譯我的網址:image

藍色行上述圖像中的被填充使用HashMap

private void showListView(JSONArray rows, JSONArray totals){ 

final ListView list = (ListView) findViewById(R.id.historylist); 
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> map; 
String[] titles = new String[]{"recordID","date","description","num1","num2"}; 
SimpleAdapter mSchedule = null; 

try{ 

    for(int i=0;i<rows.length();i++){ 
     map = new HashMap<String, String>(); 
     for(int n=0;n<allRows.getJSONArray(i).length();n++){ 
      map.put(titles[n], allRows.getJSONArray(i).getString(n)); 
     } 
     mylist.add(map); 
    } 

    mSchedule = new SimpleAdapter(
     History.this, 
     mylist, 
     R.layout.history_row, 
     titles, 
     new int[] {R.id.textView0, R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4} 
    ); 

    list.setAdapter(mSchedule); 

}catch(Exception e){ 
    Log.e("Creating ListView", e.toString()); 
} 

}

<LinearLayout > 

<LinearLayout > 
    <LinearLayout > 
     <TextView (recordID) /> 
     <TextView (date) /> 
     <TextView (num1) /> 
     <TextView (num2) /> 
    </LinearLayout> 
    <TextView (description) /> 
</LinearLayout> 

<LinearLayout (When this one is clicked) > 
    <ImageView /> 
</LinearLayout> 

當上述圖像中的綠色按鈕後,我還想得到藍色行的信息。

(日期,描述,NUM1,NUM2)

另外,如果你想有一個更好的方式來填充ListView,請讓我知道。

回答

0

您需要通過擴展BaseAdapter來實現您自己的自定義適配器。在getView方法中,您需要綁定到該Button的單擊事件。我建議有一個OnClickListener的實例並使用AdapterView#getPositionForView。一旦你擁有了點擊按鈕的視圖位置,那麼你可以獲得你的數據。通過Adapter#getItem或直接從您的數據源。

+0

對不起,但你完全失去了我。沒有在代碼中看到這一點,我不知道如何設置它。我試着跟隨你的每一個鏈接並把代碼放在一起,但它看起來像弗蘭肯斯坦。 – gatzkerob 2012-04-15 05:33:34

+0

有沒有簡單的方法來做到這一點?我在一行中有一個線性佈局,當點擊線性佈局時,我想獲得行信息。 – gatzkerob 2012-04-15 23:38:49

+0

我沒有完成你所建議的所有內容,但是我擴展了'BaseAdapter'並發現了它的特性的缺點。謝謝。 – gatzkerob 2012-05-01 03:48:39