【问题标题】:ListView with two different list items具有两个不同列表项的 ListView
【发布时间】:2012-03-13 01:55:16
【问题描述】:

我想要一个 listView,第一个列表项将具有红色背景,第二个将具有黑色背景。这可能吗?如果可以,我将如何创建自定义列表适配器? 谢谢!!

|Black item|


|Red item|


|Black item|

|Red item|

|Black item|

等等

【问题讨论】:

  • 如果我想使用两个不同的 png 作为背景而不是两种不同的颜色??
  • 正如我在回答中提到的,您确实拥有完全的灵活性,可以在列表中的每个位置做任何您喜欢的事情。当你扩展 BaseAdapter 时,除了编写你的 getView 方法之外几乎不需要做任何事情,毕竟这是主要的事情。
  • 我希望每个列表项具有相同的布局,但使用不同的图像作为背景。我该怎么做?
  • 在 getView 中,在您拥有要使用的视图后,设置其图像背景,假设您可以通过编程方式执行此操作(我不熟悉的那方面)

标签: android listview


【解决方案1】:

你应该在你的 arrayadapter 中覆盖 getView。传递给此方法的参数之一是位置。因此,您只需执行位置 % 2 即可确定该行是偶数还是奇数。根据你想要做什么,你可以改变你可以在那里膨胀两个完全不同的布局。

【讨论】:

    【解决方案2】:

    当你拥有public View getView(int position, View convertView, ViewGroup parent) 方法时,让它为每个position %2 == 0 应用不同的样式。这样您就可以轻松地使这些项目彼此不同:)

    我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      这是我最新项目适配器中的getView。我已经简化它以突出几件事:1. 您可以使用您喜欢的任何标准来决定将返回哪种视图,以及 2. 您可以使用 LayoutInflater.inflate 来获得任何类型的视图。 ,不管是什么情况。

      public View getView(final int position, View convertView, ViewGroup parent)
      {
        View v;
      
        int n = itemList.get(position);
        if (n < 0)
        {
          v = inflator.inflate(R.layout.layout1, null);
        }
        else if (n > 0)
        {
          v = inflator.inflate(R.layout.layout2, null);
        }
        else
          v = inflator.inflate(R.layout.layout3, null);
      
        return v;
      }
      

      【讨论】:

      • 如何在我的 list_adapter 类中初始化 itemList?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2023-04-03
      • 2012-01-09
      • 1970-01-01
      相关资源
      最近更新 更多