我正在尝试将XML
文件解析到我的应用程序的应用程序。基本上,我的小应用程序正在尝试将图像从XML
文件加载到ViewPagerAdapter
。所以,我需要帮助学习教程或示例代码。 XML
文件看起来像这样;
<Items
<Item>
<src>http://mysite/data/cool-pictures/Cool-pictures-1.jpg</src>
<Name>Picture 1</Name>
</Item>
<Item>
<Src>http://mysite/data/cool-pictures/Cool-pictures-10.jpg</Src>
<Name>Picture 2</Name>
</Item>
<Item>
<Src>http://mysite/data/cool-pictures/Cool-pictures-11.jpg</Src>
<Name>Picture 3</Name>
</Item>
<Item>
<Src>http://mysite/data/cool-pictures/Cool-pictures-12.jpg</Src>
<Name>Picture 4</Name>
</Item>
</Items>
我该怎么办呢。 另外,这是适配器类的代码。
public class ViewpagerAdapter extends PagerAdapter {
Context context;
String[] carName;
int[] carImage;
LayoutInflater inflater;
public ViewpagerAdapter(MainActivity mainActivity, String[] carName, int[] carImage) {
this.context = mainActivity;
this.carName=carName;
this.carImage = carImage;
}
@Override
public int getCount() {
return carImage.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
TextView carText;
ImageView carView;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.content_main, container,false);
carText = (TextView) itemView.findViewById(R.id.car_text);
carView = (ImageView) itemView.findViewById(R.id.car_image);
carText.setText(carName[position]);
carView.setImageResource(carImage[position]);
container.addView(itemView);
return itemView;
}
}
答案 0 :(得分:0)
参考here
这将帮助您获得问题的答案。
答案 1 :(得分:0)
最后,我得到了问题的答案。我所做的是有一个类来处理我的XML。代码如下。
public List<ItemModel> parse(InputStream is){
XmlPullParserFactory pullParserFactory;
try {
pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullParserFactory.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(is, null);
parseXMl(parser);
}catch (XmlPullParserException e) {
e.printStackTrace();
}
System.out.print("-----Parse" + myItems);
return myItems;
}
private void parseXMl(XmlPullParser parser) {
int event;
try {
event = parser.getEventType();
while (event != XmlPullParser.END_DOCUMENT){
String name = parser.getName();
switch (event){
case XmlPullParser.START_TAG:
if (name.equalsIgnoreCase("Item")){
myItem = new ItemModel();
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if (name.equals("Item")){
myItems.add(myItem);
}else if (name.equals("Name")){
myItem.setName(text);
}else if (name.equals("Src")){
myItem.setSource(text);
}
break;
default:
break;
}
event = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
然后在我的MainActivity
课上,我打电话给XMlHandler。
XMLHandler handler = new XMLHandler();
List<YourItems> myItems = handler.parse(getAssets().open("items.xml"));
请注意,如果我创建了资产文件夹并将XML
文件转储到那里。这就是我能够使用getAssets()
的原因。
所以我将myItems
传递给了adapter
,这对我有用。