【问题标题】:Adding TextView above ListView items to scroll along ListView Items在 ListView 项目上方添加 TextView 以沿 ListView 项目滚动
【发布时间】:2013-04-10 14:14:29
【问题描述】:

我正在尝试在 ListFragment 中的 ListView 上方添加一个 View(我的 Fragment 扩展了一个 ListFragment)。

我正在使用适配器将项目放在 ListView 上。

我无法实现的是放置另一个视图(在这种情况下,一个 TextView 就可以了),它出现在列表项上方并在它们之间滚动。

我尝试将 Fragment 超类更改为 Fragment 并添加带有 TextView 和 ListView 的布局,但问题是这样一来,TextView 不会滚动到 ListView 元素。

我还尝试添加一个 ScrollView 并将 TextView 和 ListView 都放入其中,但这样一来,ListView 不会滚动。

我也尝试过手动添加一个对象到ListFragment的ArrayAdapter中(这是第一次尝试),然后相应地更改ListView Item Layout,但是问题是它不会出现(我不知道为什么)。

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

【问题讨论】:

    标签: android android-listview android-listfragment


    【解决方案1】:

    您需要使用ListView.addHeaderView()

    您不能在 XML 中执行此操作。

    public View onCreateView(LayoutInflater li, ViewGroup vg, Bundle b)
    {
        ViewGroup result = (ViewGroup) super.onCreateView(li, vg, b);
        TextView tv = new TextView(this);
        tv.setText("lalala");
        ListView lv = result.findViewById(android.R.id.list);
        lv.addHeaderView(tv);
        return result;
    }
    

    【讨论】:

    • 好的!这样可行。但只是视觉上!项目上的数据被交换。第一项是第二个列表项的数据,列表标题是第一个列表项的数据...
    • 这取决于您从哪里获取数据。您的适配器只会返回它知道的数据。如果您在 ListView 上调用 getAdapter(),或使用 ListView.getItemAtPosition(),它将使用自己的内部适配器,该适配器知道在调用适配器之前偏移项目位置。
    • 这很有帮助,但正如我所说,并没有解决我的问题,因为它交换了列表项数据,从第一个项目到列表标题,从第二个到第一个,依此类推,虽然在视觉上它看起来是正确的。我有一个使用 setListAdapter(MyListAdapter); 设置的自定义适配器;添加到第一个问题是我必须在 onResume ListFragment 方法上创建 setListAdapter。这使得当我从另一个被调用的片段返回到这个片段时,他试图在 onResume 方法上添加 Header,然后应用程序崩溃了。
    • 我试图了解您提到的 ListView.getItemAtPosition 并将 addHeader 传递给 onCreateView ListFragment 方法,我会在尝试完成后立即回来。不用担心,我当然会在问题解决后立即接受您的正确答案。谢谢!
    • 您应该使用 onCreateView() 方法来设置您的标题。这样它只做一次。我所说的其他内容是,ListView 将标题计为 ListView 中的第一项,而适配器中的第一项成为 ListView 中的第二项,依此类推。这是正常的。如果您使用 ListView.getItemAtPosition() 或 ListView.getListAdapter() 它将为您处理偏移它。如果您试图通过直接调用适配器来获取任何项目的数据,您总是可以自己减去一个。
    猜你喜欢
    • 2016-05-13
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多