0

我试图围绕如何实现自定义 arrayadapter 来为列表活动提供项目,然后在新活动中显示该选定项目。

例如,我正在从一个 RESTful Web 服务中提取一个文档列表,并且我想在一个列表活动中显示这些文档。我对 API 的第一次调用将返回包含两个字段的 JSON 文档:标题和 ID。我想用 UI 中文档的标题来填充我的 listactivity。当我单击该项目时,理想情况下,它将打开一个正常的活动,在该活动中它将进行另一个 API 调用,以 JSON 格式返回整个选定的文档并将其显示到新活动的 UI 中。

在谷歌搜索之后,我想出了我认为我需要的步骤:

  1. 创建一个只包含列表项的标题和 ID 的 RecordListItem 类。
  2. 创建一个 RecordListItem 类型的数组适配器。
  3. 将该数组适配器附加到我的列表活动中。
  4. ???

我对将所选项目的 id 传递给正常活动的正确方法感到困惑,因此我可以进行 API 调用以提取该特定记录。这些步骤有意义吗?

我习惯了网络开发,所以这是一种不同的思维方式,我被困住了。有人可以解释正确的步骤或可能将我指向在新活动中显示所选项目的教程吗?

4

2 回答 2

2

在您的 ArrayAdapter 构造函数中,您传递带有标题/id 的数组

public Docs_Array(Context context, Object[] docs) {
   super(context, R.layout.row, docs);
   this.context = context;
   this.docs = docs;
}

在 getView 方法中,您将设置每一行的布局和信息,“位置”参数是您获取所需文档的方式。如果您想拥有不止一个东西,例如title+id,您可以将 Object[i] 实例转换为另一个数组。

public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View rowView = inflater.inflate(R.layout.row, parent, false);
   TextView textView = (TextView)rowView.findViewById(R.id.row_title);
   textView.setText(((String[])docs[position])[0]); // 0 for title.
}

为每个行视图添加一个 onClickListener,并且 ((String[])docs[position])[1] 将为您提供被点击的文档标题的 id。

于 2013-03-07T03:12:15.823 回答
1

没有看到任何代码,听起来你是在正确的轨道上。我建议也许将 id 存储在HashMap使用titleaskeyid as the. Then, when you select your item you can look up theidusing the标题and send it to your nextActivity 中。我大概就是这样处理的。

至于教程,如果您还没有,我将从文档开始。然后,如果你有一个特定的问题,我相信你可以在 SO 上找到类似的问题,在 Google 上还有更多。希望这可以帮助

于 2013-03-07T03:02:41.647 回答