Android的 - 如何设置一个字段一个ArrayList的ListView从一个对象,但还跟踪的项目ID

问题描述:

我宣布这个适配器: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

我认为只需要Override Th对象的toString()方法。类似于

public String toString() { 
    return problemName; 
} 

这是ArrayAdapter用来填充TextView的默认文本。

+0

谢谢 - 聪明的主意:) – GeekedOut 2012-03-12 21:23:15

我不知道,我对这个问题不清楚,但也许这有助于...

您可以通过使用标签存储件与Android的任何GUI元素(视图)的数据。

这里是查看:: setTag功能: http://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object

“...标签也可以用来存储数据,而无需求助于另一个数据结构的视图中。”