自定义列表视图,片段中包含自定义适配器

时间:2017-05-05 23:37:19

标签: android listview android-fragments

我正在创建一个应用程序,其中我有一个活动,底部导航栏和导航栏已实现。当我通过意图加载另一个活动时,它会加载页面,但导航栏都会消失。但是,当我加载片段类时,显示的导航栏也可以工作,页面也会加载。

我已经在avtivity扩展类中使用自定义适配器实现了listview,但我无法为片段类执行此操作。我见过很多教程但是所有教程都使用预定义的数组适配器。我希望列表中的每一行都包含相对布局。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

是。有很多方法,但我这样做的方式非常不同(这就是我的想法)。您需要做的就是按照我列出的步骤进行操作。

第1步:粘贴您的列表视图代码(如果您以前使用它们,请删除表格布局,否则无需担心)到您的xml文件中。此外,从xml中删除滚动视图,因为它们会导致列表视图出现问题。

第2步:通过将对象变为java并通过findViewById为其提供正确的id来初始化listview

第3步:为列表视图的行创建所需的自定义布局。例如,相对布局有2个文本视图和图片等等。在这里使用你的想象力:p

步骤#4 :由于在片段中,您必须使用上下文或视图变量来从xml中提供ID变量。为此,我们从onCreateView方法获得三个对象,它们是:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)

为LayoutInflater创建一个全局变量并将其设置为等于此inflater并使用全局inflater初始化视图等。像这样:

LayoutInflater global;
global = inflater;
view = global.inflate(R.layout.your_frag_id, container, false);

步骤#5 :对于自定义适配器,您必须为他们提供不同的视图,以获取他们的行项ID。在Activity扩展类中,它很容易,但在Fragments中并非如此。它是这样做的。

public View getView(int i, View view, ViewGroup viewGroup) {
  view = global.inflate(R.layout.your_seperate_xml_id_for_each_row_of_the_list_view, null);}

步骤#6 :现在,您只需使用listView.setAdapter函数添加值即可。