如何从我运行到 ListView Android 的命令中显示数据?

Posted

技术标签:

【中文标题】如何从我运行到 ListView Android 的命令中显示数据?【英文标题】:How to display data from the command that I run to the ListView Android? 【发布时间】:2019-10-23 07:29:50 【问题描述】:

我的代码有问题,我想显示我在ListView 中运行的命令的结果

这是我现在的代码

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_log, container, false);

        // Untuk menjalankan API Mikrotik
        ApiConnection con = MainActivity.getCon();
        if (con !=null) 
            try 
                List<Map<String, String>> rs = con.execute("/log/print");
                for (Map<String, String> r : rs) 
                    ListView listView = (ListView) view.findViewById(R.id.viewLog);
                    ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
                            getActivity(),
                            android.R.layout.simple_list_item_1);
                    listView.setAdapter(listViewAdapter);
                

             catch (MikrotikApiException e) 
                e.printStackTrace();
            
        


        return view;
    

我已经尝试使用System.Out 并且可以显示数据

List<Map<String, String>> rs = con.execute("/log/print");
    for (Map<String, String> r : rs) 
        System.out.println(r);
    

System.Out显示数据

06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 通过 api,topics=system,info,account, time=jun/08 00:36:45, .id=*1036 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out:标签=4,数据=消息=40:B0:76:D5:DE:00@wlan1: disconnected, received deauth: 发送站离开 (3), 主题=无线,信息,时间=jun/08 00:50:14,.id=*1037 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=40:B0:76:D5:DE:00@wlan1: 已连接,信号 强度-51,主题=无线,信息,时间=jun/08 00:50:26,.id=*1038 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=wifi_dhcp deassigned 10.10.2.103 从 40:B0:76:D5:DE:00,主题=dhcp,信息,时间=jun/08 00:50:26, .id=*1039 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=wifi_dhcp 分配 10.10.2.103 到 40:B0:76:D5:DE:00,主题=dhcp,信息,时间=jun/08 00:50:26,.id=*103A 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:11:35,.id=*103B 06-08 02:27:32.433 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:12:04,.id=*103C 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.100 登录 通过 api,topics=system,info,account, time=jun/08 01:13:29, .id=*103D 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:25:07,.id=*103E 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:25:37,.id=*103F 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:26:38,.id=*1040 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:27:33,.id=*1041 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:27:40,.id=*1042 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 通过 api,topics=system,info,account, time=jun/08 01:28:18, .id=*1043 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:29:00,.id=*1044 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:29:15,.id=*1045 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:30:10,.id=*1046 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:30:25,.id=*1047 06-08 02:27:32.434 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:32:21,.id=*1048 06-08 02:27:32.444 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:32:53,.id=*1049 06-08 02:27:32.444 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:38:08,.id=*104A 06-08 02:27:32.444 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 通过 api,topics=system,info,account, time=jun/08 01:39:02, .id=*104B 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:44:38,.id=*104C 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 通过 api,topics=system,info,account, time=jun/08 01:44:53, .id=*104D 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 通过 api,主题=系统,信息,帐户,时间=jun/08 01:52:58,.id=*104E 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user kkp 从 10.10.2.107 登录 via api,topics=system,info,account,time=jun/08 01:53:13,.id=*104F 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=user yogahilmi 从登录 CC:2D:83:A4:94:B8 通过 winbox,主题=系统,信息,帐户,时间=jun/08 02:03:26,.id=*1050 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out:标签=4, data=message=user yogahilmi 通过 CC:2D:83:A4:94:B8 注销 winbox,主题=系统,信息,帐户,时间=jun/08 02:04:46,.id=*1051 06-08 02:27:32.445 11252-11252/com.tasanahetech.mikroboxv2 I/System.out: tag=4, data=message=wifi_dhcp deassigned 10.10.2.108 来自 CC:2D:83:82:17:57,主题=dhcp,信息,时间=jun/08 02:19:56, .id=*1052

【问题讨论】:

你可能只需要一个基本的列表视图教程 你不能在循环中创建列表视图 【参考方案1】:

Map 对象 r 不能直接转换为字符串。 使用

List<Map<String, String>> rs = con.execute("/log/print");
    for (Map<String, String> r : rs) 
        System.out.println(r.get("put the key here").toString());
    

或者如果您没有密钥,请执行此操作以打印所有值

 List<Map<String, String>> rs = con.execute("/log/print");
        for (Map<String, String> r : rs) 
            for(String valueStr:r.values())
                 System.out.println(valueStr);
                     
        

更新.. 使用这个 customAdapter

public class text extends ArrayAdapter<Map<String, String>> 

    List<Map<String, String>> rs;

    public text(@NonNull Context context, int resource, @NonNull List<Map<String, String>> objects) 
        super(context, resource, objects);

        this.rs = objects;// assigns your map object to rs
    


    @Override
    public int getCount() 
        return rs.size(); //basically number of Items to be in the listview
    

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
        return super.getView(position, convertView, parent); // this is where you use your data

        // first inflate a custom view from xml

        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView =inflater.inflate("custom view here", null); // the custom view

        LinearLayout l=convertView.findViewById("some layoutid inside the custom view");


        // Now below you can use your List
        Map<String, String> r = rs.get(position);
        for (String valueStr : r.values()) 

            TextView t=new TextView(getContext());
            t.setText(valueStr);

            l.addView(t);
        


        return convertView;
    

【讨论】:

您能告诉我,如何将它用于 ListView 吗? 查看可用于列表视图的示例自定义适配器。您的列表视图只需要一个适配器。您需要更多解释,然后访问此链接github.com/codepath/android_guides/wiki/…

以上是关于如何从我运行到 ListView Android 的命令中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章

在不同的活动中将数据从 ListView 传递到 TextView,Android

如何将数据添加到 listView 的自定义 BaseAdapter - Android

Android:如何从我的 APK 中将文件系统挂载到 RW 中? (当然是有根的)

单击 ListView 项目时如何加载 Firebase DB 值的详细活动

如何从我的 Android 代码在 web 视图中运行 React JS 函数?

如何在运行时调整 Android listview 列宽?