有一个 ListView,其中通过 REST 加载了帖子的简要描述。当您单击列表项时,将调用第二个活动,该活动从服务器请求发布的扩展数据并将其显示给用户。
我弄清楚了 post_id 参数本身的传输。在 ListView 中,我在列表项上挂了一个处理程序:
lv_posts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main.this, PostDetails.class);
intent.putExtra("post_id", "61509");
startActivity(intent);
}
});
在第二个活动中,我得到如下数据:
Intent intent = getIntent();
post_id = intent.getStringExtra("post_id");
问题是如何将第一个请求(帖子列表)中的 post_id 绑定到 ListView 元素,然后如何将它们从所需元素中拉出并将它们传递给 putExtra(而不是值“61509”,应该有一个特定帖子的 post_id)。
我建议不要用大量活动使应用程序过载,并在片段上做所有事情(只需根据用户的反应替换片段)。
这个选项在各个方面都会更好:)
此外,最好不要使用目前已弃用的列表视图,而是使用 Recycler 视图。
现在回到问题本身:从中不清楚做什么和如何做,但我抓住了大致的逻辑。应用里面一定有某种feed,当你点击帖子的时候,一定有某种反应吧?为了不转移意图并且不开始新的活动,您可以简单地在顶部添加所需的片段。
我认为没有必要以某种方式直接将 post_id 绑定到视图,您可以从适配器中获取它们。有一个适配器,我们从中获取元素,在列表的元素上设置必要的信息,对吗?然后您可以按位置从适配器中获取 post_id 。还是我误解了什么?
我们从 android 支持库中获取 RecyclerView,它和视图表一样,有一个适配器,适配器有一个 onBindViewHolder 方法,其中传递了视图持有者(对于视图表是可选的)和元素的位置。同一个适配器有您的列表,您可以根据需要(来自同一个 json)形成列表,因此,您可以按位置从中提取元素并基于此设置文本/图片等。此方法的第二个参数 (onBindViewHolder) 是位置,因此您也可以使用它在任何其他适配器方法中从列表中拉取元素。这些列表元素可以存储您需要的其他数据,包括各种 ID。