Android-如何使用对象中的字段设置ArrayList ListView,同时跟踪项目id

Android-如何使用对象中的字段设置ArrayList ListView,同时跟踪项目id,android,Android,我声明此适配器: ArrayAdapter<Problem> adapter; 阵列适配器; 我还声明此ArrayList: ArrayList<Problem> problems = new ArrayList <Problem>( ); arraylistproblems=newarraylist(); 我的问题类只有两个字段:problemId和problemName 我调用远程数据库并按如下方式填充数据:

我声明此适配器:

ArrayAdapter<Problem> adapter;
阵列适配器;
我还声明此ArrayList:

ArrayList<Problem> problems = new ArrayList <Problem>( );
arraylistproblems=newarraylist();
我的问题类只有两个字段: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();     
for(int i=0;i
因此,屏幕上显示的内容是对象引用,但我希望显示的是名称,当用户单击该项时,我也应该能够在我的侦听器中检索该项的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 );

    }
  });        
ListView lv=getListView();
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父级、视图、,
内部位置,长id)
{
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),((TextView)视图).getText(),
吐司。长度(短)。show();
//现在只需做一些简单的事情,比如显示一条响应性消息
Log.d(“MyProblemsActivity”,从列表中选择:“+((TextView)view.getText());
Log.d(“MyProblemsActivity”,“position:+position”);
Log.d(“MyProblemsActivity”,“id:+id”);
}
});        
非常感谢您的帮助


谢谢

我不确定我是否清楚这个问题,但也许这有助于

通过使用标签,您可以在Android中使用任何GUI元素(视图)存储一段数据

以下是View::setTag函数: )


“…标记也可用于在视图中存储数据,而无需求助于其他数据结构。”

我不确定我是否清楚这个问题,但这可能有助于

通过使用标签,您可以在Android中使用任何GUI元素(视图)存储一段数据

以下是View::setTag函数: )


“…标记也可用于在视图中存储数据,而无需求助于其他数据结构。”

我认为只需重写问题对象的th toString()方法。差不多

public String toString() {
    return problemName;
}

这是用于填充文本视图的默认文本。

我认为只需要覆盖问题对象的th toString()方法。差不多

public String toString() {
    return problemName;
}

这是an将用于填充文本视图的默认文本。

此问题中的“问题”不容易破译。你到底需要什么帮助?看起来您已经有了一些工作代码,而且您的问题的标题毫无意义。@synic现在对象引用显示在屏幕上。我只需要problemName显示在屏幕上,但需要保存一个引用id以供以后使用。这有助于把问题弄清楚吗?这个问题中的“问题”不容易理解。你到底需要什么帮助?看起来您已经有了一些工作代码,而且您的问题的标题毫无意义。@synic现在对象引用显示在屏幕上。我只需要problemName显示在屏幕上,但需要保存一个引用id以供以后使用。这有助于澄清问题吗?