android自定义listactivity arrayadapter

时间:2013-03-07 02:49:13

标签: android android-arrayadapter listactivity

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

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

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

  1. 创建一个RecordListItem类,该类只包含列表项的标题和ID。
  2. 创建RecordListItem类型的arrayadapter。
  3. 将该arrayadapter附加到我的listactivity。
  4. ???
  5. 我对将所选项目的ID传递给正常活动的正确方法感到困惑,因此我可以调用API来拉取该特定记录。这些步骤有意义吗?

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

2 个答案:

答案 0 :(得分:2)

在ArrayAdapter构造函数中,使用标题/ id

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

在getView方法中,您将设置每一行的布局和信息,“position”参数是您获取所需文档的方式。如果你想要的不仅仅是一件事,比如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。

答案 1 :(得分:1)

没有看到任何代码,听起来你是在正确的轨道上。我建议可以使用HashMap作为titlekeyid as the id . Then, when you select your item you can look up the title {{using the将{}保存在and send it to your next中1}} Activity`。这可能就是我如何处理它。

就教程而言,如果你还没有,我会从Docs开始。然后,如果您遇到特定问题,我相信您可以在Google上找到类似的问题以及更多问题。希望这有帮助