【问题标题】:How to create a ListView and add items to it programmatically without XML?如何在没有 XML 的情况下以编程方式创建 ListView 并向其添加项目?
【发布时间】:2014-03-20 19:06:44
【问题描述】:

是否可以在没有 XML 的情况下创建 ListView 和适配器,以编程方式向其中添加项目?如果有,怎么做?

【问题讨论】:

  • 是的,有办法做到这一点。
  • @Guardanis 你知道我该怎么做吗?
  • ListView myListView = new ListView(context);除此之外,这个网站是为了帮助您解决问题,而不是为您编写整个事情。如果您有特定的问题或问题,请向我们展示您所做的事情,我们可以帮助您解决问题。我们不能只是神奇地预测您所做的事情或为您构建整个事情。但这是 0.0005 秒的 Google 搜索:stackoverflow.com/a/12795518/1426565

标签: android android-layout android-listview android-adapter


【解决方案1】:

首先,您需要初始化 ListView,然后将其添加到活动的布局中。您可以在此处阅读有关执行此操作的信息:How to create a RelativeLayout programmatically with two buttons one on top of the other?

您将创建一个布局,然后创建一个 ListView 并将其添加到该布局中。

接下来,您需要创建一个自定义适配器。您可以在此处阅读更多相关信息: http://developer.android.com/reference/android/widget/ListAdapter.html

例如,您可以使用 ArrayAdapter。 http://developer.android.com/reference/android/widget/ArrayAdapter.html

ArrayAdapter 有一个方法

public View getView (int pos, View convertView, ViewGroup parent)

此方法返回一个视图以显示在列表中的位置 pos。在此方法中,您将首先查看您是否已经拥有该位置的视图(通过检查 convertView)。如果不这样做,您将根据需要生成一个新视图。您可以在代码中执行此操作,或者更好的是,您可以使用 XML 文件并扩展视图。

在设置好适配器后,在 ListView 上调用 setAdapter。

例如,它可能看起来像这样:

@Override
public void onCreate(Bundle savedInstanceState){
    LinearLayout ll = new LinearLayout(this);
    ListView lv = new ListView(this);
    YourAdapter adapter = new YourAdapter(<parameters here>);
    lv.setAdapter(adapter);

    ll.addView(lv, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    setContentView(ll);
}

【讨论】:

  • 在我离开这个页面之前,我必须说:这与他提出的问题完全 - 无关......
  • @Guardanis - 他的问题始于“我需要使用她的适配器而不是 xml 以编程方式创建一个列表视图”。这样做的一部分是创建一个适配器并指定它返回的视图。当然,这实际上并没有创建 ListView,但它与问题无关。它专门回答了如何以编程方式创建列表项。您需要一个适配器,您可以通过编程方式创建一个视图并在 getView 方法中返回它。
  • 是的,它以“我需要以编程方式创建一个列表视图”开头,而您没有回答任何与此相关的问题......它没有询问如何创建适配器。
  • "...有她的适配器,没有 xml" 我给了他一个基本的演练部分他的问题。这又回到了我的观点:这与问题有关,只是不是完整的答案。网上有很多资源会告诉您如何以编程方式将视图(例如 ListView)添加到布局中。
  • 我添加了更多以进行澄清。
【解决方案2】:

假设您了解 Fragments 和 ArrayAdapters,最简单的方法是扩展 ListFragment 并使用 setListAdapter(ArrayAdaper/some custom adapter object) 便捷方法添加您的适配器。如果你没有使用便捷的方法,你应该使用 ListFragment.setListAdapter(...) 而不是 ListView.setListAdapter(...)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2021-01-14
    • 1970-01-01
    • 2010-11-21
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多