【问题标题】:Populate ListView with text and value from strings.xml使用 strings.xml 中的文本和值填充 ListView
【发布时间】:2016-08-18 13:43:25
【问题描述】:

我是 android 新手,想要填充以 id 为值、以字符串为标题的列表视图项。 我所能找到的只是他们建议使用字符串数组,例如:

<string-array name="test">
      <item>first item</item>
      <item>second item</item>
</string-array>

我正在寻找的是这样的:

<string-array name="test">
      <item value="1">first item</item>
      <item value="2">second item</item>
</string-array>

就像 html 中 selectoption 标签一样

【问题讨论】:

  • ArrayAdapter 接受String[]。您可以从 XML 资源中获取String[]。这样做到底有什么问题?
  • @cricket_007 正如我所说的,我是安卓新手。那么我可能正在寻找除listview 之外的另一个view。是否有可以为每个项目设置文本和值的视图?
  • 您可以简单地调整适配器的行布局视图以在每个项目旁边显示一个数字值(如元素的位置)。 ListView 不是问题,它只是 Adapter 的显示元素(保存数据的地方)
  • 这些值没有排序。第一项的价值可能是8,第二项的价值可能是4

标签: android arrays string listview


【解决方案1】:

创建一个新的 Activity(这将创建一个 xml 文件(布局)和一个 Java 类。

在布局上,创建一个在 int 上有 ListView 的 Layot:

<?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    android:orientation=”vertical” >

 <ListView
    android:id=”@+id/itemList”
    android:layout_width=”match_parent”
    android:layout_height=”wrap_content” 
    android:entries="@array/test"
/>

在您的活动中,您必须:

  • 创建一个 ListView 变量
  • 将您的视图映射到此变量的 XML 上
  • 从资源数组适配器中获取字符串列表
  • 实例化一个适配器(您必须在列表视图上设置的对象以获取您的列表(在您的情况下为字符串)并将它们添加到您的回收器视图中。您可以为您的适配器创建一个自定义类,但是当处理字符串,您可以使用一个简单的称为 ArrayAdapter)。
  • 在 ListView 对象上设置适配器

要完成所有这些事情,请将其放入代码中:

public class MyActivity extends Activity {

    // Creating variable
    ListView listView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Mapping with your XML view
        listView = (ListView) findViewById(R.id.itemList);

        /// Getting list of Strings from your resource
        String[] testArray = getResources().getStringArray(R.array.test); 
         List<String> testList = Arrays.asList(test);

        // Instanciating Adapter
        ArrayAdapter<String> adapter = new ArrayAdapter<>(getBaseContext(),
    android.R.layout.simple_list_item_1, testList);

        // setting adapter on listview
        listview.setAdapter(adapter);
    }
}

【讨论】:

  • 我想从资源中获取物品
  • @AshkanMobayenKhiabani 这就是 getResources().getStringArray 所做的
  • 我假设您有一个带有 ListView 的布局,并且您已经知道如何在其上设置一个简单的 ArrayAdapter。
【解决方案2】:

这将帮助您按位置检索字符串..

String[] some_array = getResources().getStringArray(R.array.your_string_array)

【讨论】:

  • 适配器在哪里?
  • 这会得到项目(我做到了),但我还必须将ids 分配给每个项目
  • 资源 res= getResources(); String [] item=res.getStringArray(R.array.test); stackoverflow.com/questions/30941803/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2013-07-03
相关资源
最近更新 更多