我有一个rss解析器,它接受rss feed并尝试在可穿戴列表视图中显示标题。这是我的rss解析器类的代码,
public List headlines, links;
public String url;
public RSSParser(String url){
this.url = url;
headlines = new ArrayList();
links = new ArrayList();
new GetFeed().execute();
}
public void parse(){
if(url != null){
try{
URL urlReader = new URL(url);
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(getInputStream(urlReader), "UTF_8");
boolean insideItem = false;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equalsIgnoreCase("item")) {
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("title")) {
if (insideItem)
headlines.add(xpp.nextText()); //extract the headline
} else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText()); //extract the link of article
}
}else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){
insideItem = false;
}
eventType = xpp.next(); //move to next element
}
}catch(IOException e){
e.printStackTrace();
}catch (XmlPullParserException e){
e.printStackTrace();
}
}else{
Log.e("DEBUG", "The RSS URL is null");
}
}
public InputStream getInputStream(URL url1){
try{
return url1.openConnection().getInputStream();
}catch (IOException e){
return null;
}
}
public List getHeadlines() {
return headlines;
}
public List getLinks() {
return links;
}
public class GetFeed extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
Log.i("DEBUG", "DO IN BACKGROUND DONE");
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Log.i("DEBUG", "ONN POST EXECUTE");
parse();
}
}
要尝试在可穿戴列表视图中显示标题,这是我对可穿戴列表视图适配器的代码,
private class MyAdapter extends WearableListView.Adapter {
private final LayoutInflater inflater;
public RSSParser rss;
private MyAdapter(Context context) {
inflater = LayoutInflater.from(context);
rss = new RSSParser("http://feeds.bbci.co.uk/news/technology/rss.xml");
}
@Override
public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new WearableListView.ViewHolder(inflater.inflate(R.layout.row_simple_item_layout, null));
}
@Override
public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
TextView view = (TextView) holder.itemView.findViewById(R.id.textView);
view.setText(rss.getHeadlines().get(position).toString());
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return listItems.size();
}
}
现在我得到的错误是有一个数组索引超出范围异常,我尝试将可穿戴列表项设置为rss解析器类中的数组,这行代码
view.setText(rss.getHeadlines().get(position).toString());
任何帮助都将非常感谢,如果您需要了解该计划,请随时提出。我还在我的磨损清单中添加了使用互联网权限,因为所有代码都在应用程序的磨损分支中。
由于