使用 strings.xml 中的文本和值填充 ListView

Ash*_*ani 5 arrays string android listview

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

<string-array name="test">
      <item>first item</item>
      <item>second item</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是这样的:

<string-array name="test">
      <item value="1">first item</item>
      <item value="2">second item</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

就像htmloption中 a的标签一样select

Leo*_*ela 5

创建一个新的 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"
/>
Run Code Online (Sandbox Code Playgroud)

在您的活动中,您必须:

  • 创建一个 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);
    }
}
Run Code Online (Sandbox Code Playgroud)