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);
}
});
帮助非常感谢!!!!
谢谢!
答
我认为只需要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)
“...标签也可以用来存储数据,而无需求助于另一个数据结构的视图中。”
这个问题中的“问题”不容易被破译。你到底需要什么帮助?看起来你已经有了一些工作代码,而你的问题的标题根本没有任何意义。 – synic 2012-03-12 20:37:11
@synic现在对象引用被显示在屏幕上。我只需要将问题名称显示在屏幕上,但需要保存以供稍后使用的引用ID。这有助于明确问题吗? – GeekedOut 2012-03-12 20:52:17