如何在listview中添加数组项?

时间:2018-01-04 09:15:21

标签: android

我有一个应用程序,其中我有String[],我必须从String[]第一个字符中找出每个元素并将其设置为另一个数组,然后设置为listview。我该怎么做

代码: -

 public static final String[] titles = new String[]{"Strawberry",
        "Banana", "Orange", "Mixed"};

从上面我发现了0号中的字符

   for (int i=0;i<titles.length;i++){
        String test = titles[i];
        Log.e(TAG,"Items****"+test);
        char firstChar = test.charAt(0);
        Log.e(TAG,"Char"+firstChar);

    }

现在我必须在TextDrawable中设置这些char

static TextDrawable drawable = TextDrawable.builder()         .buildRound(&#34; + 1&#34;,Color.GREEN);

现在我必须将这些drawable设置为另一个数组

TextDrawable[] image = //here i want to set

1 个答案:

答案 0 :(得分:1)

您可以使用具有所需属性的POJO类。

 class TextModel{
    String text;
    TextDrawable drawable;
}

只需将其添加到Collection

ArrayList<TextModel> list=new ArrayList<>();
    for (int i=0;i<titles.length;i++){
        char firstChar = titles[i].charAt(0);
        TextModel textModel=new TextModel();
        textModel.text=test;
        textModel.drawable=TextDrawable.builder()
                .buildRound(firstChar, Color.GREEN);
        list.add(textModel);
    }

现在您可以使用list在ListView上设置适配器。你必须明确定制适配器。

这只是一种做法。您还可以在TextDrawable中构建Adapter并将其保存在全局(以防止再次创建表单)。

<强>更新

要在数组中设置drawable,您可以这样做。

TextDrawable[] images=new TextDrawable[titles.length];
    for (int i=0;i<titles.length;i++){
        char firstChar = titles[i].charAt(0);
        images[i]=TextDrawable.builder() .buildRound(firstChar, Color.GREEN);
    }

现在您可以使用images设置适配器。

   的更新
要从名称中获取姓名缩写,您可以使用以下方法。根据您的需要进行修改。

public static String getInitials(String name) {
    try {
        String initials = "";
        String[] str = name.split(" ");
        for (int i = 0; i < str.length; i++) {
            initials += str[i].charAt(0);
            if (initials.length() == 3) {
                break;
            }
        }
        return initials.toUpperCase();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return name;
}