清明也不知道干啥继续,之前的博客使用介绍,这里详细写下吧,本来以为做这个会有点工作量,做了才发现就2-3个小时工时。放假回去 放项目里 当开发版 可视化测试工具用用。
使用说明
Json 数据来自百度天气例子,工程已经上传到jcenter了,使用android studio可以方便的添加依赖compile 'com.anarchy.lib:library:0.5.0'
。
使用方式如下:
try {
/*json 数据 来自 http://apistore.baidu.com/apiworks/servicedetail/515.html*/
InputStream in = getAssets().open("json");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuffer buffer = new StringBuffer();
String temp;
while ((temp =reader.readLine())!=null){
buffer.append(temp);
}
JsonFormatDialogFragment.newInstance(buffer.toString()).show(getSupportFragmentManager(),"");
} catch (IOException e) {
e.printStackTrace();
}
实现思路
开始默认解析第一层数据,对于下一层数据,动态添加。如果已经添加过,就调用 View 的显示隐藏去改变数据。
最后效果是这样的:
- 弹窗就是一个DialogFragment,不过没有使用默认样式,稍微改了下样式。其实使用默认的弹窗也一样。
最外层使用了一个 RecyclerView,不用这个外边套一个scrollview 也可以。虽然使用RecyclerView,不过我把复用功能关闭了-。-。
主要 逻辑代码其实就在adapter里实现,在实现adapter之前有几个部分需要先准备一下。
1.ItemView 看效果其实每个item组成 都一样 左边一个文字,中间一个图片,右边也是一个文字。所以构造ItemView 的xml 布局文件如下:
<com.anarchy.library.widget.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:visibility="gone"
android:id="@+id/text_left"
android:textSize="12sp"
android:layout_width