我想要做的是读取一个xml文件,它有两个值颜色和名称,并显示名称并更改列表中单个项目的背景颜色。有谁知道怎么做?
继承人我的xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="menu_array">
<item>
<name>Page1</name>
<colour>#ffffff</colour>
</item>
<item>
<name>Page2</name>
<colour>#ffffBB</colour>
</item>
<item>
<name>Page3</name>
<colour>#fff45f</colour>
</item>
<item>
<name>Page4</name>
<colour>#ffff00</colour>
</item>
</string-array>
</resources>
答案 0 :(得分:0)
我担心您必须在自定义适配器中解析item
值或使用两个不同的数组,一个用于名称,另一个用于颜色
答案 1 :(得分:0)
将您的字符串数组更改为至少如下所示:
<string-array name="menu_array">
<item>
Page1 #ffffff
</item>
<item>
Page2 #ffffBB
</item>
<item>
Page3 #fff45f
</item>
<item>
Page4 #ffff00
</item>
</string-array>
我试图解析你指定的字符串数组,我获得了表单的结果:
Page1 #ffffff
就我而言,这实际上是无用的,因为你将不得不使用(其中list是实际的字符串数组)分割你的代码:
String[] cmenu =list[i].split("#");
item.name=cmenu[0];
item.colour="#"+cmenu[1];
menuList.add(item);
或者您可以使用subString方法来执行此操作。但是我无法解析您的排列中的颜色值(总是给我一个NumberFormatException),而我指定的那个似乎可以正常工作:
int Color.parseColor(String color)
这是我为解决问题而创建的自定义适配器的getView方法的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row=convertView;
TextView textView;
if(row==null)
{
row=inflater.inflate(resourceId, parent, false);
textView=(TextView)row.findViewById(R.id.text1);
row.setTag(R.id.text1,textView);
}
else
textView=(TextView)row.getTag(R.id.text1);
textView.setText(menuList.get(position).name);
try{
Log.d(TAG, menuList.get(position).colour);
row.setBackgroundColor(Color.parseColor(menuList.get(position).colour));
}
catch(Exception ex)
{
Log.e(TAG, "Still does not work");
}
return row;
}
注意:item是ColouredMenuItem的一个对象,它只是将String name,colour
包装在一个类中。
customAdapter具有构造函数:
MadAdapter(Context context,List<ColouredMenuItem> list,int resourceId)
{
this.context=context;
this.menuList=list;
this.resourceId=resourceId;
inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
编辑:您还可以创建一个XML文件,您可以将其添加到资源中,并使用任何可用的解析器对其进行解析。