Android 将XML本地数据放入RecyclerView

Android 将XML本地数据放入RecyclerView,android,xml-parsing,android-recyclerview,Android,Xml Parsing,Android Recyclerview,我想将一些数据从本地XML数据传递到RecylerView,但我在整个工作中遇到了一些问题。请检查并帮助我。 这是我的MainActivity.java public class MainActivity extends Activity { private List<Tour> TourList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

我想将一些数据从本地XML数据传递到RecylerView,但我在整个工作中遇到了一些问题。请检查并帮助我。 这是我的MainActivity.java

public class MainActivity extends Activity {

private List<Tour> TourList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RecyclerView recList = (RecyclerView) findViewById(R.id.cardList);
    recList.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(this);
    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recList.setLayoutManager(llm);

    ToursPullParser parser = new ToursPullParser();
    List<Tour> tours = parser.parseXML(this);

    TourAdapter ca = new TourAdapter(tours);
    recList.setAdapter(ca);

}

public static class TourViewHolder extends RecyclerView.ViewHolder {
    protected TextView myTitle;
    protected TextView vDesc;
    protected TextView vLike;
    protected ImageView vPic;
    protected ImageView vPicLike;
    protected Button vTag;
    protected Button vFakeTag;

    public TourViewHolder(View v) {
        super(v);
        myTitle =  (TextView) v.findViewById(R.id.txtTitle);
        vDesc = (TextView)  v.findViewById(R.id.txtDesc);
        vLike = (TextView)  v.findViewById(R.id.txtLike);
        vPic = (ImageView)  v.findViewById(R.id.imgTitle);
        vPicLike = (ImageView)  v.findViewById(R.id.imgLike);
        vFakeTag = (Button)  v.findViewById(R.id.btnFakeTag);
        vTag = (Button)  v.findViewById(R.id.btnTag);
    }
}
}  
xml的一切都很好,不必担心它们。
谢谢大家

经过两个小时的认真思考,我自己解决了这个问题,以下是解决方案: 在MainActivity.class i中添加以下内容:

private List<Tour> myTourList() {
    ToursPullParser parser = new ToursPullParser();
    ArrayList<Tour> tour = (ArrayList<Tour>) parser.parseXML(this);
    return tour;
}  

你有什么问题?你收到错误消息了吗?是的@bish应用程序强制关闭你能发布你的xml文件吗?
public class ToursPullParser {

private static final String LOGTAG = "EXPLORECA";

private static final String TOUR_ID = "tourID";
private static final String TOUR_TITLE = "tourTitle";
private static final String TOUR_DESC = "tourDesc";
private static final String TOUR_LIKE = "tourLike";
private static final String TOUR_IMAGE = "tourPic";
private static final String TOUR_TAG = "tourTag";

private Tour currentTour  = null;
private String currentTag = null;
List<Tour> tours = new ArrayList<Tour>();

public List<Tour> parseXML(Context context) {

    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();

        InputStream stream = context.getResources().openRawResource(R.raw.tour);
        xpp.setInput(stream, null);

        int eventType = xpp.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                handleStartTag(xpp.getName());
            } else if (eventType == XmlPullParser.END_TAG) {
                currentTag = null;
            } else if (eventType == XmlPullParser.TEXT) {
                handleText(xpp.getText());
            }
            eventType = xpp.next();
        }

    } catch (NotFoundException e) {
        Log.d(LOGTAG, e.getMessage());
    } catch (XmlPullParserException e) {
        Log.d(LOGTAG, e.getMessage());
    } catch (IOException e) {
        Log.d(LOGTAG, e.getMessage());
    }

    return tours;
}

private void handleText(String text) {
    String xmlText = text;
    if (currentTour != null && currentTag != null) {
        if (currentTag.equals(TOUR_ID)) {
            Integer id = Integer.parseInt(xmlText);
            currentTour.setId(id);
        } 
        else if (currentTag.equals(TOUR_TITLE)) {
            currentTour.setTitle(xmlText);
        }
        else if (currentTag.equals(TOUR_DESC)) {
            currentTour.setDescription(xmlText);
        }
        else if (currentTag.equals(TOUR_IMAGE)) {
            currentTour.setImage(xmlText);
        }
        else if (currentTag.equals(TOUR_LIKE)) {
            double like = Double.parseDouble(xmlText);
            currentTour.setLike(like);
        }else if (currentTag.equals(TOUR_TAG)) {
            currentTour.setTag(xmlText);
        }
    }
}

private void handleStartTag(String name) {
    if (name.equals("tour")) {
        currentTour = new Tour();
        tours.add(currentTour);
    }
    else {
        currentTag = name;
    }
}
}
public class Tour {
private int id;
private static String title;
private static String description;
private static String tag;
private static double like;
private static String image;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public static String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public static String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}
public static String getTag() {
    return tag;
}
public void setTag(String tag) {
    this.tag = tag;
}
public static String getImage() {
    return image;
}
public void setImage(String image) {
    this.image = image;
}
public static double getLike() {
    return like;
}
public void setLike(Double like) {
    this.like = like;
}

}    
private List<Tour> myTourList() {
    ToursPullParser parser = new ToursPullParser();
    ArrayList<Tour> tour = (ArrayList<Tour>) parser.parseXML(this);
    return tour;
}  
private ArrayList<Tour> tourList;
public TourAdapter(List<Tour> myTourList) {
    this.tourList = (ArrayList<Tour>) myTourList;
}

@Override
public int getItemCount() {
    return tourList.size();
}

@Override
public void onBindViewHolder(TourViewHolder tourViewHolder, int i) {
    Tour tour = tourList.get(i);
    TourViewHolder.myTitle.setText(tour.getTitle());
    TourViewHolder.vDesc.setText(tour.getDescription());
    TourViewHolder.vTag.setText(tour.getTag());
}