2012-03-12 67 views
0

我宣佈這個適配器:Android的 - 如何設置一個字段一個ArrayList的ListView從一個對象,但還跟蹤的項目ID

ArrayAdapter<Problem> adapter; 

我也這樣聲明此ArrayList:

ArrayList<Problem> problems = new ArrayList <Problem>(); 

我問題類只有2個字段:problemId和problemName。

我讓到遠程數據庫的調用和填充數據是這樣的:

    for (int i = 0; i < obj.length(); i++) 
        { 
         JSONObject o = obj.getJSONObject(i);         

         problem_title = o.getString("problem_title"); 
         problem_id = o.getString("problem_id"); 

         Problem p = new Problem (); 
         p.setProblemId(problem_id);       
         p.setProblemId(problem_title); 

         problems.add(p);              
        } 

        adapter.notifyDataSetChanged();  

這樣被顯示在屏幕上的東西是對象的引用,但我想顯示的名稱,當用戶點擊該項目,我也應該能夠檢索該項目的ID在我的聽衆在這裏:

ListView lv = getListView(); 
lv.setTextFilterEnabled(true); 

lv.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) 
    { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 

     // For now just do something simple like display a responsive message 
     Log.d("MyProblemsActivity" , "A choice was made from the list: " + ((TextView) view).getText()); 
     Log.d("MyProblemsActivity" , "position: " + position); 
     Log.d("MyProblemsActivity" , "id: " + id); 

    } 
    });   

幫助非常感謝!!!!

謝謝!

+0

這個問題中的「問題」不容易被破譯。你到底需要什麼幫助?看起來你已經有了一些工作代碼,而你的問題的標題根本沒有任何意義。 – synic 2012-03-12 20:37:11

+0

@synic現在對象引用被顯示在屏幕上。我只需要將問題名稱顯示在屏幕上,但需要保存以供稍後使用的引用ID。這有助於明確問題嗎? – GeekedOut 2012-03-12 20:52:17

回答

1

我認爲只需要Override Th對象的toString()方法。類似於

public String toString() { 
    return problemName; 
} 

這是ArrayAdapter用來填充TextView的默認文本。

+0

謝謝 - 聰明的主意:) – GeekedOut 2012-03-12 21:23:15

相關問題