XML解析器到VIewPagerAdapter
问题描述:
我正在尝试解析一个XML
文件到我的应用程序的应用程序。基本上,我的小应用程序试图从XML
文件加载图像到ViewPagerAdapter
。所以,请我在教程或示例代码上寻求帮助。 XML
文件看起来像这样;XML解析器到VIewPagerAdapter
<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;
}
}
答
最后,我已经得到了一个问题的答案。我所做的是有一个类来处理我的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
,它为我工作。
你好,它看起来有点难以简单吗? – Jeremiah
该教程有什么困难? –