需求介绍
简单的实现主界面上的测试ITEM的显示及其跳转,可以随意配置显示的内容
实现方案
主界面上使用RecycleView显示列表,将每个测试ITEM设Java Bean,其有2个属性,一个是名称,另一个是跳转的class。将需要配置的内容写入xml文件,然后在主界面上解析xml,获取配置得到一个list,然后将此list传到adapter,再在RecycleView上显示即可。
传统上在配置测试ITEM时,流程比较麻烦,需要在主界面上不断添加item view,然后在MainActivity中为其item view添加点击监听事件,然后再在点击事件处添加跳转Intent,很多重复动作,而且配置不方案。
private ListItem mItem;
private final ArrayList<ListItem> mList = new ArrayList<>();
/* 以下XMLReader的这种解析方式也是属于sax解析,
* 同我们使用SaxParser功能一样。但是这种功能更加的强大.
*/
try {
Log.i("通知", "开始解析");
//InputStream inputStream = this.getClassLoader().getResourceAsStream("list_item.xml");
InputStream inputStream = getAssets().open("list_item.xml");
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(getRootElement().getContentHandler());
reader.parse(new InputSource(inputStream));
Log.i("通知", "解析完毕");
} catch (Exception e) {
e.printStackTrace();
}
getRootElement()
/**
* @return 返回设置好处理机制的rootElement
*/
private RootElement getRootElement() {
/*rootElement代表着根节点,参数为根节点的tagName*/
RootElement rootElement = new RootElement(ROOT_ELEMENT);
/*获取一类子节点,并为其设置相应的事件
* 这里需要注意,虽然我们只设置了一次beauty的事件,但是我们文档中根节点下的所有
* beauty却都可以触发这个事件。
* */
Element beautyElement = rootElement.getChild(ELEMENT);
// 读到元素开始位置时触发,如读到<beauty>时
beautyElement.setStartElementListener(new StartElementListener() {
@Override
public void start(Attributes attributes) {
mItem = new ListItem();
}
});
//读到元素结束位置时触发,如读到</beauty>时
beautyElement.setEndElementListener(new EndElementListener() {
@Override
public void end() {
mList.add(mItem);
}
});
Element nameElement = beautyElement.getChild(ITEM_NAME);
// 读到文本的末尾时触发,这里的body即为文本的内容部分
nameElement.setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
mItem.setName(body);
}
});
Element ageElement = beautyElement.getChild(ITEM_CLASS_NAME);
ageElement.setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
mItem.setIntent(MainActivity.this, body);
}
});
return rootElement;
}
“list_item.xml”
<?xml version="1.0" encoding="utf-8"?>
<lists>
<item>
<name>Service学习</name>
<class>com.maxxspace.study.ui.StudyService</class>
</item>
<item>
<name>Boradcast学习</name>
<class>com.maxxspace.study.ui.StudyService</class>
</item>
</lists>
相关参考
https://blog.csdn.net/xujian197/article/details/79725729