2016-05-18 6 views
0

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> 

どうすればよいですか。 Moresoは、アダプタクラスのコードです。

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

私はこの問題に答えました。私がしたことは、私の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に渡してくれました。

0

これは、あなたの質問に対する答えを得るのに役立ちますhere

を参照してください。

+0

こんにちは、ちょっと単純なものがありますか? – Jeremiah

+0

このチュートリアルでは何が難しいですか? –