从服务器接收的json数据,gson解析生成bean对象,怎么让页面显示出来

1.我在mainactivity建了一个空的内部类

Response response = okHttpClient.newCall (request).execute ();
String date = response.body ().string ();
Gson gson = new Gson ();
  F_User f_user = gson.fromJson (date, F_User.class);
    ```
这样是不是就能创建,并且给F_User这个类的对象赋值


2.接着怎么显示在页面不知道咋做,

``` if (date != null) {
            Gson gson = new Gson ();
            F_User f_user = gson.fromJson (date, F_User.class);

        //把解析好的数据发送到页面
            TextView tv_id = findViewById (R.id.tv1);
            tv_id.setText(f_user.getF_id ());

            TextView tv_name = findViewById (R.id.tv2);
            tv_name.setText(f_user.getF_username ());
            TextView tv_group = findViewById (R.id.tv3);
            tv_group.setText(f_user.getF_group ());
            TextView tv_role = findViewById (R.id.tv4);
            tv_role.setText(f_user.getF_role ());
            TextView tv_role_index = findViewById (R.id.tv5);
            tv_role_index.setText(f_user.getF_role_index ());
            TextView tv_passcode = findViewById (R.id.tv6);
            tv_passcode.setText(f_user.getF_passcode ());
                        //加入message
                        Message message = new Message ();
            message.what =1;
            handler.sendMessage (message);

                        public Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1://_这个位置写的对吗_
                   *_ BaseAdapter adapter=new BaseAdapter () {
                    }
                            (this,R.layout.activity_main);

                    .setAdapter();
                    break_;*
            }

```是这个样子就可以了吗?
3.下面是我copy的模板地址
[引用地址](https://blog.csdn.net/qq_26650589/article/details/70256219 "A")


因为数据格式变了,导致项目解析数据之后的步骤不知道还需要不,想用ListView接,因为刚接触安卓,拖控件也拖不明白,辛苦大神们了。

5个回答

这个就好比画图纸,有人来给你讲了这里面需要画什么,需要注意什么,什么逻辑,
然后你会根据这些内容并将其呈现在图纸中。

现在你已经做好了数据接收以及呈现的内容,name你需要去绘制需要呈现的ui界面,然后将这些数据填充到界面上各个控件里就好了,例如

TextView tv_name = findViewById(R.id.tvame);
tv_name.setText(f_user.name);
jasec1991
czyw 回复Burcy Wen: textview直接set,运行存在线程问题,好像关于网络访问的都绕不开message了。
12 个月之前 回复
French_fries
Burcy Wen 回复jasec1991: 不需要,显示数据用不到handler,listview是array,array的每个记录都是上述的一个对象,即对象的array
12 个月之前 回复
French_fries
Burcy Wen 回复jasec1991: 看你需求了,是想一个控件显示所有内容,就把对象内容拼成你需要显示的字符串格式,如果需要多个控件,单独显示,那肯定需要多个控件单独承接了
12 个月之前 回复
jasec1991
czyw 要是属性很多,也是一个TextView对应一个属性吗?有没有简便的方法
12 个月之前 回复
jasec1991
czyw 我照模板做的,什么handlemessage就不需要了吗?还有ListView,数据格式他是array,改成一个对象我就不会了
12 个月之前 回复

直接获取bean就行了

jasec1991
czyw 不太明白,是用get吗,据说这个自动构建实体类,是什么时候构建,项目运行之前吗?具体点呗
12 个月之前 回复

假设你的F_User里面有一个name属性,页面有一个TextView,接下来就是

TextView tv_name = findViewById(R.id.tvame);
tv_name.setText(f_user.name);
UPWARDONE
UPWARDONE 回复jasec1991: 要写呀
12 个月之前 回复
as_csdn
取个什么名字好。 回复jasec1991: F_User类是你的json数据里面的key组成的bean类,必须要有内容,用插件GsonFormat可以一键生成,不用自己写了
12 个月之前 回复
jasec1991
czyw 还是要先把F_User类写全吗
12 个月之前 回复

页面显示就是,你用bean去获取就可以,比如f_user.getName f_user.getId

在activity的oncreate方法中加入了一行效果拔群的代码,就跳过了线程不规范引起的问题。
可以获取到参数,并且显示出来了,虽然直接textview显示效果不好,可能和显示屏适配有关系。

 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectDiskReads().detectDiskWrites().detectNetwork()
                .penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                .detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
                .penaltyLog().penaltyDeath().build());
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问