我有一个应用程序,其中我有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
答案 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;
}