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()。 所以我通过myItemsadapter,它为我工作。

参考here

这将帮助您得到您的问题的答案。

+0

你好,它看起来有点难以简单吗? – Jeremiah

+0

该教程有什么困难? –