异步传输刷新数据怎么写语句

星抹微云 2018-09-19 02:44:33
addDataSet(y1_data, "温度");
addDataSet(y2_data, "湿度");

y1_data和y2_data 得不到值,求解决办法,


public class ChartActivity extends Activity {

public ArrayList<String> x_data = new ArrayList<String>();
public ArrayList<Entry> y1_data = new ArrayList<Entry>();
public ArrayList<Entry> y2_data = new ArrayList<Entry>();

private LineChart mChart;

private int[] mColors = new int[]{
Color.parseColor("#5abdfc"), //蓝色
Color.parseColor("#eb73f6") //紫色
};

protected String[] mMonths = new String[]{
"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
mChart = (LineChart) findViewById(R.id.chart);

onTestGet();
initChartView();

/**-------------这里的数据不重要,主要用随机数的方式生成点坐标-------------**/
//设置模拟数据
/* ArrayList<Entry> yVals = new ArrayList<Entry>();
for (int i = 0; i < 12; i++) {
yVals.add(new Entry(i, (float) (Math.random() * 10000f)));
}

ArrayList<Entry> yVals2 = new ArrayList<Entry>();
for (int i = 0; i < 12; i++) {
yVals2.add(new Entry(i, (float) (Math.random() * 10000f)));
}*/

addDataSet(y1_data, "温度");
addDataSet(y2_data, "湿度");
/**--------------------------**/

//图标的下边的指示块 图例
Legend l = mChart.getLegend();
l.setForm(Legend.LegendForm.LINE);
l.setXEntrySpace(40);
}


private void initChartView() {
mChart.setDrawGridBackground(false);
mChart.setDescription(null); //右下角说明文字
mChart.setDrawBorders(true); //四周是不是有边框
mChart.setBorderWidth(0.5f);
mChart.setBorderColor(Color.parseColor("#b3b3b3")); //边框颜色,默认黑色?



mChart.setTouchEnabled(true);

//禁止x轴y轴同时进行缩放
mChart.setPinchZoom(false);
// enable scaling and dragging
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);

//控制轴上的坐标绘制在什么地方 上边下边左边右边
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //x轴是在上边显示还是显示在下边
xAxis.enableGridDashedLine(10f, 10f, 0f); //背景用虚线表格来绘制 给整成虚线
xAxis.setAxisMinimum(0f);//设置轴的最小值。这样设置将不会根据提供的数据自动计算。
xAxis.setGranularityEnabled(true); //粒度
xAxis.setGranularity(1f); //缩放的时候有用,比如放大的时候,我不想把横轴的月份再细分

xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mMonths[(int) value % mMonths.length];
}


});

xAxis.setDrawAxisLine(false); //是否显示坐标轴那条轴
xAxis.setDrawLabels(true); //是不是显示轴上的刻度
xAxis.setLabelCount(mMonths.length); //强制有多少个刻度
xAxis.setTextColor(Color.parseColor("#b3b3b3"));


//隐藏左侧坐标轴显示右侧坐标轴,并对右侧的轴进行配置
mChart.getAxisLeft().setEnabled(false);
YAxis leftAxis = mChart.getAxisRight();
leftAxis.setEnabled(true);
leftAxis.enableGridDashedLine(10f, 10f, 0f);
leftAxis.setAxisMinimum(0);
leftAxis.setDrawAxisLine(false);
//坐标轴绘制在图表的内侧
leftAxis.setPosition(INSIDE_CHART);
leftAxis.setTextColor(Color.parseColor("#b3b3b3"));
//确实没看懂这个是干嘛用的,默认是10f
//这个玩意好像有坐标轴enable的时候是不可用的
leftAxis.setSpaceBottom(10f);

//一个chart中包含一个Data对象,一个Data对象包含多个DataSet对象,
// 每个DataSet是对应一条线上的所有点(相对于折线图来说)
mChart.setData(new LineData());

}


/**
* Author: liuqiang
* Time: 2016-12-26 15:58
* Description: 根据数据集合,动态构建DataSet,来绘制界面
*/
private void addDataSet(ArrayList<Entry> entryList, String dataSetName) {

LineData data = mChart.getData();

if (data != null) {
int count = data.getDataSetCount();

LineDataSet set = new LineDataSet(entryList, dataSetName);
set.setLineWidth(1.5f);
set.setCircleRadius(3.5f);

int color = mColors[count % mColors.length];

set.setColor(color);
set.setCircleColor(color);
set.setHighLightColor(color);
set.setValueTextSize(10f);
set.setDrawValues(false); //节点不显示具体数值
set.setValueTextColor(color);
set.enableDashedHighlightLine(10f, 5f, 0f); //选中某个点的时候高亮显示只是线
set.setDrawFilled(true); //填充折线图折线和坐标轴之间
set.setFillColor(color); //填充可以设置渐变填充一个Drawable,或者仅仅填充颜色
set.setAxisDependency(YAxis.AxisDependency.RIGHT); //如果使用的是右坐标轴必须设置这行


set.setDrawHorizontalHighlightIndicator(false);//取消横向辅助线

data.addDataSet(set);
data.notifyDataChanged();
mChart.notifyDataSetChanged();
//这行代码必须放到这里,这里设置的是图表这个视窗能显示,x坐标轴,从最大值到最小值之间
//多少段,好像这个库没有办法设置x轴中的间隔的大小
mChart.setVisibleXRangeMaximum(6);
mChart.invalidate();
}
}

public void onTestGet(){ //是异步操作
//*
//* 这里填写你的服务器所在的IP地址替换我的ip地址
//*
try{
RequestParams params = new RequestParams("http://192.168.108.162:8080/WebServer/chart.action");

Intent getIntent = getIntent();
String username = getIntent.getStringExtra("username");

params.addQueryStringParameter("username", username);

x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
//可以根据公司的需求进行统一的请求成功的逻辑处理
String test="",test2="";
Pattern p = Pattern.compile("(\\[[^\\]]*\\])"); //去除字符串中的中括号
Matcher m = p.matcher(s);
List<String> list_tmp = new ArrayList<String>();
while(m.find()){
test=m.group().substring(1, m.group().length()-1);
test2=test.replaceAll("\"", "");//去掉字符串中的 双引号
list_tmp= Arrays.asList(test2.split(","));
}
int t=1;
for(int i=0;i<list_tmp.size();i=i+4)
{
x_data.add(list_tmp.get(i) + "m");

float val = Float.parseFloat(list_tmp.get(i + 1));
Entry entry = new Entry(val, t);
y1_data.add(entry);

float val1 = Float.parseFloat(list_tmp.get(i + 2));
Entry entry1 = new Entry(val1, t);
y2_data.add(entry1);
t++;
}
//mChart.notifyDataSetChanged();//刷新 adapter
}

@Override
public void onError(Throwable throwable, boolean b) {
//可以根据公司的需求进行统一的请求网络失败的逻辑处理
}

@Override
public void onCancelled(CancelledException e) {

}

@Override
public void onFinished() {

}
});
}catch (Exception e){
e.printStackTrace();
}

}
}
...全文
597 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-10-01
  • 打赏
  • 举报
回复
Android 之 ListView 列表视图 http://www.verejava.com/?id=17468044104031
大王来寻春 2018-09-30
  • 打赏
  • 举报
回复
在x.http.get 的onSuccess方法最后 再 调用一次如下你的逻辑,完事,结贴

addDataSet(y1_data, "温度");
addDataSet(y2_data, "湿度");
/**--------------------------**/

//图标的下边的指示块 图例
Legend l = mChart.getLegend();
l.setForm(Legend.LegendForm.LINE);
l.setXEntrySpace(40);
JohnLiu_ 2018-09-29
  • 打赏
  • 举报
回复
将你25-46行的代码放到第207行的onFinished方法中执行

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧