【问题标题】:How to store listview arrays in strings.xml如何在strings.xml中存储listview数组
【发布时间】:2013-12-09 10:20:58
【问题描述】:

我正在从事一个项目,其中我有一个列表视图,我的代码中几乎没有数组,但我想从一个单独的 xml 文件加载数组,该文件是“strings.xml”

但我不知道该怎么做

这是我的活动

package com.Example.myapk;

 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ArrayAdapter;
 import android.widget.EditText;
 import android.widget.ListView;

 public class MainActivity extends Activity {

 private ListView list1;

 private String array[] = { "Iphone", "Tutorials", "Gallery", "Android",

 "item 1", "item 2", "item3", "item 4", "item 1", "item 2", "item3", "item 4","item 1",       "item 2", "item3", "item 4"};

 EditText inputSearch; 
 ArrayAdapter<String> adapter;
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 inputSearch = (EditText) findViewById(R.id.inputSearch); 
 list1 = (ListView) findViewById(R.id.listView01);
 adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array);
  list1.setAdapter(adapter);
  inputSearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);   
}

@Override
 public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
    int arg3) {
// TODO Auto-generated method stub

}

 @Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub                          
}
});
list1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
 Intent myIntent = new Intent(MainActivity.this,WebViewActivity.class);
myIntent.putExtra("key",position);
startActivity(myIntent);
}
 });   
}
}

【问题讨论】:

    标签: android xml arrays listview


    【解决方案1】:

    把下面的代码放到你的string.xml中

    <string-array name="myArray">
       <item >Iphone</item>
       <item >Tutorials</item>
       <item >Gallery</item>
       <item >Android</item>
       <item >item 1</item>
    </string-array>
    

    然后getResources().getStringArray(R.array.myArray) 会将这些值作为字符串数组返回。所以在你的主要活动文件中

    private ListView list1;
    private String array[] = getResources().getStringArray(R.array.myArray);
    EditText inputSearch; 
    ArrayAdapter<String> adapter;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        inputSearch = (EditText) findViewById(R.id.inputSearch); 
        list1 = (ListView) findViewById(R.id.listView01);
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array);
        list1.setAdapter(adapter);
    }
    

    【讨论】:

    • 要将字符串数组从 xml 获取到您的代码,请使用下面的代码 getResources().getStringArray(R.id.myArray); 这将为您提供字符串数组
    • 但我的代码中已经有几个数组,我需要删除它们吗?我试图这样做,但我得到了错误,你能修改我的代码吗?
    • 请告诉我在我的代码中哪里实现这个??我不想改变整个代码,只是数组的东西。请说清楚 1.我应该从我的代码中删除什么? 2.我应该在哪里添加你的代码?
    • 只需用private String array[] = getResources().getStringArray(R.id.myArray);回复private String array[] = { "Iphone", "Tutorials", "Gallery", "Android", "item 1", "item 2", "item3", "item 4", "item 1", "item 2", "item3", "item 4","item 1", "item 2", "item3", "item 4"}; 代码并将字符串数组放入string.xml如果您有任何疑问,请告诉我
    • 这里我的 xml 文件是 Arrays.xml
    【解决方案2】:

    要将数组存储在 xml 中,您可以这样做:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="myArray">
            <item>Iphone</item>
            <item>Tutorials</item>
            <item>Gallery</item>
            <item>Android</item>
        </string-array>
    </resources>
    

    然后在您的代码中,您可以访问它:

    Resources res = getResources();
    String[] myArray = res.getStringArray(R.array.myArray);
    

    在这里查看:http://developer.android.com/guide/topics/resources/string-resource.html#StringArray

    【讨论】:

      【解决方案3】:

      在你的 strings.xml

      IPhone 教程 画廊 安卓

      如果需要,可以添加更多项目。

      在您的代码中:

      package com.Example.myapk;
      
      import android.app.Activity;
      import android.content.Intent;
      import android.os.Bundle;
      import android.text.Editable;
      import android.text.TextWatcher;
      import android.view.View;
      import android.widget.AdapterView;
      import android.widget.AdapterView.OnItemClickListener;
      import android.widget.ArrayAdapter;
      import android.widget.EditText;
      import android.widget.ListView;
      
      public class MainActivity extends Activity {
      
          private ListView list1;
      
          EditText inputSearch;
          **ArrayAdapter<CharSequence> adapter;**
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              inputSearch = (EditText) findViewById(R.id.inputSearch);
              list1 = (ListView) findViewById(R.id.listView01);
              **adapter = ArrayAdapter.createFromResource(this,               R.array.menu, android.R.layout.simple_list_item_1);**
              list1.setAdapter(adapter);
              inputSearch.addTextChangedListener(new TextWatcher() {
      
                  @Override
                  public void onTextChanged(CharSequence cs, int arg1, int arg2,
                          int arg3) {
                      // When user changed the Text
                      MainActivity.this.adapter.getFilter().filter(cs);
                  }
      
                  @Override
                  public void beforeTextChanged(CharSequence arg0, int arg1,
                          int arg2, int arg3) {
                      // TODO Auto-generated method stub
      
                  }
      
                  @Override
                  public void afterTextChanged(Editable arg0) {
                      // TODO Auto-generated method stub
                  }
              });
              list1.setOnItemClickListener(new OnItemClickListener() {
                  public void onItemClick(AdapterView<?> parent, View view,
                          int position, long id) {
                      Intent myIntent = new Intent(MainActivity.this,
                              WebViewActivity.class);
                      myIntent.putExtra("key", position);
                      startActivity(myIntent);
                  }
              });
          }
      }
      

      【讨论】:

      • (getActivity() 上的错误“方法 getactivity() 未为主要活动类型定义”
      • 对不起,这个方法getActivity()表示你在一个fragment中,想要activity引用。由于您处于活动状态,请为此更改 getActivity()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      相关资源
      最近更新 更多