Android 将XML本地数据放入RecyclerView
我想将一些数据从本地XML数据传递到RecylerView,但我在整个工作中遇到了一些问题。请检查并帮助我。 这是我的MainActivity.javaAndroid 将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
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());
}