分类 Android 下的文章

Android Spinner 动态增加 item,以及添加 Spinner 监听选择/选中项事件

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.confrim_activity);

        //获取控件
        Spinner startPlace = (Spinner) findViewById(R.id.start_place);

        List<String> stringList = new ArrayList<>();
        stringList.add("项目1");
        stringList.add("项目2");
        stringList.add("项目3");

        //使用系统的默认样式 android.R.layout.simple_spinner_item
        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, stringList);

        //使用系统默认下拉样式 android.R.layout.simple_spinner_dropdown_item
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        startPlace.setAdapter(adapter);

        //监听选择事件
        startPlace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //TODO 选中事件
                //position:选中的哪个    stringList.get(position)
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }

QQ20201028-105957@2x.png

Java List 与 JSON 相互转换

使用谷歌 Gson:

//list转换为json
Gson gson = new Gson();  
List<Person> persons = new ArrayList<Person>();  
String str = gson.toJson(persons);  
//json转换为list
Gson gson = new Gson();  
List<Person> persons = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());  

记一次 Android Studio 里面的代码全部错乱

初次怀疑可能是自己在 macOS 下打开过次项目导致错乱

在 Android Studio 下和自己用 Notpad++ 打开显示的代码不一样,NotePad++显示才是正确的
在 Android Studio 下和自己用 Notpad++ 打开显示的代码不一样,NotePad++显示才是正确的

尝试过解决 Reload All from Disk,依旧无用

解决办法(自测有效)

关闭 Android Studio,删掉 caches 文件夹,再次打开

请注意我是 Android Studio 4.0.2 版本

以下的版本可能有些差别,反正在 Android Studio 相关路径下,看到 cache 字样的文件夹,删除就完事了

我自己的路径在:

  • C:\Users\chuwen\.android\cache
  • C:\Users\chuwen\.AndroidStudio4.0\system\cache

具体的要自己看看了

Snipaste_2020-10-24_19-17-42.jpg


参考方案:https://www.jianshu.com/p/4d722b1a1ac0
Google 搜索关键字:android studio代码错乱

MPAndroidChart 中文文档 (翻译版-非官方)

来源

https://github.com/tuteng/MPAndroidChart


开始

安装

为了使用 LineChart, BarChart, ScatterChart, CandleStickChart, PieChart or RadarChart,像下面一样定义它在 .xml中:

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/chart"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

然后通过下面的方式从你的Activity, Fragment诸如此类的东西中检索它:

        LineChart chart = (LineChart) findViewById(R.id.chart);

或者创建它在代码中(然后增加它到一个布局中):

        LineChart chart = new LineChart(Context);

        RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativeLayout);
        rl.add(chart);

更新

  • invalidate():在图表图表项目中调用这个方法将重新刷新屏幕。

数据记录

  • setLogEnabled(boolean enabled):设置这个为真将激活图表项目中的logcat输出

通用图表项目样式

下面是一些你能直接使用在图表项目中的通用的样式方法。

  • setBackgroundColor(int color):设置背景颜色这将覆盖整个图表项目视图。另外,一个背景颜色能被设置在.xml的布局文件中
  • setDescription(String desc):设置一个描述文本出现在图表的右下角。
  • setDescriptionColor(int color): 设置描述文本的颜色。
  • setDescriptionPosition(float x, float y): 设置一个自定义坐标用于定位描述文本在屏幕上的像素。
  • setDescriptionTypeface(Typeface t): 设置采用Typeface来绘制买描述文本。
  • setDescriptionTextSize(float size): 设置描述文本的像素尺寸,最小6f,最大16f。
  • setNoDataTextDescription(String desc): 设置图表为空时出现的文本。
  • setDrawGridBackground(boolean enabled): 如果打开,背景矩形将出现在已经画好的绘图区域的后边。
  • setGridBackgroundColor(int color): 设置网格背景颜色。
  • setDrawBorders(boolean enabled):打开或关闭绘制的图表边框。(环绕图表的线)
  • setBorderColor(int color):设置图表边框线的颜色。
  • setBorderWidth(float width): 设置图表边框线的宽度。
  • setMaxVisibleValueCount(int count): 设置一个数字用于图表中显示绘制的值标签。这仅作用于当setDrawValues()允许时。

- 阅读剩余部分 -

使用 GsonFormat 解析数组形式的 json

记下笔记,以访忘记

假设有以下数据

[{
    "CarId": 1,
    "Time": "2017-11-26 16:58:11",
    "Cost": 10
}, {
    "CarId": 1,
    "Time": "2017-11-26 16:58:19",
    "Cost": 20
}, {
    "CarId": 1,
    "Time": "2017-11-26 16:58:24",
    "Cost": 30
}, {
    "CarId": 1,
    "Time": "2017-11-26 16:58:28",
    "Cost": 40
}]

以下类

public class GetCarAccountRecord {

    /**
     * CarId : 1
     * Time : 2017-11-26  04:58:11
     * Cost : 10
     */

    private int CarId;
    private String Time;
    private int Cost;

    public int getCarId() {
        return CarId;
    }

    public void setCarId(int CarId) {
        this.CarId = CarId;
    }

    public String getTime() {
        return Time;
    }

    public void setTime(String Time) {
        this.Time = Time;
    }

    public int getCost() {
        return Cost;
    }

    public void setCost(int Cost) {
        this.Cost = Cost;
    }
}

使用 Gson 解析,然后遍历输出

List<GetCarAccountRecord> list = new Gson().fromJson(jsonObject.optJSONArray("ROWS_DETAIL").toString(), new TypeToken<List<GetCarAccountRecord>>() {}.getType());

for (GetCarAccountRecord getCarAccountRecord : list) {
    Log.i("小车编号:", String.valueOf(getCarAccountRecord.getCarId()));
    Log.i("充值金额:", String.valueOf(getCarAccountRecord.getCost()));
}