【问题标题】:Easy Way To Add Huge Amount of predefined strings to Spinner widget?向 Spinner 小部件添加大量预定义字符串的简便方法?
【发布时间】:2017-07-09 10:29:11
【问题描述】:

有没有办法输入这个文本 阿尔法罗密欧 阿斯顿·马丁 奥迪 宾利 奔驰 宝马 布加迪 卡迪拉克 雪佛兰 克莱斯勒 雪铁龙 克尔维特 达夫 达契亚 大宇 大发 达特桑 德罗兰 迪诺 躲闪 法布德 法拉利 菲亚特 福特 本田 悍马 现代 捷豹 吉普车 起亚 科尼赛克 拉达 兰博基尼 蓝旗亚 路虎 雷克萨斯 利吉尔 ...所有汽车公司;

轻松/快速地进入strings.xml...例如,我不想在每辆汽车的周围单独写<item></item>

还是我?....

非常感谢任何帮助

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    你可以在原始文件夹中保存一个带有逗号(,)分隔值的文本文件,并在任何活动的 onCreate 中读取它们:

     private List<String> mFileItems;
    

    然后

    int textFile = R.raw.keywords;
    mFileItems = Arrays.asList(Utils.getStringFromRaw(this, textFile).replace("\"", "").split("\\s*,\\s*"));
    

    public class Utils {
    
    
    public static String getStringFromRaw(Context mContext, int resource) throws IOException {
        Resources r = mContext.getResources();
        InputStream is = r.openRawResource(resource);
        String statesText = convertStreamToString(is);
        is.close();
        return statesText;
    }
    
    private static String convertStreamToString(InputStream is) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int i = is.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = is.read();
        }
        return byteArrayOutputStream.toString();
    }
    }
    

    这将为您编译列表中以逗号分隔的所有项目的列表。然后你可以在微调器适配器中设置它。

    希望这会有所帮助。

    【讨论】:

    • 如果您认为答案正确,请您标记为正确吗?
    • 没有更简单的方法吗?我试图在 strings.xml 中预先定义这些,当我用 预先定义它们时,我怎么能很快地做到这一点,而不是像昨晚我刚刚复制 并将其粘贴在每个...在strings.xml中是否有一种技术可以更快地将 xml标签放在字符串周围?我将预定义的字符串放在 striongs.xml 中是不好还是性能下降?
    • 不,它的表现还不错。我建议的方法很简单,因为您总是可以比字符串文件更容易地编辑文本文件。您只需将文本文件中的值以逗号分隔,其余的由脚本完成。我想说因为这两个文件都在您的项目中,所以性能几乎相同。
    猜你喜欢
    • 2011-01-03
    • 2011-06-09
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2019-01-26
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多