繁体   English   中英

将整数数组从一类传递到另一类

[英]pass integer array from one class to another

我上两节课。 我正在尝试从数据库值绘制图形,但无法将值从一个类发送到另一个使用数组的类。 请仔细阅读我的代码并为我提供帮助。

以下是存在数组值的类(现在我正在使用静态值)

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.achartengine.chartdemo.demo.chart.IDemoChart;
import org.achartengine.chartdemo.demo.chart.TemperatureChart;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class ChartDemo extends ListActivity {
    double a = 10;
    double pass[] = { 7, 0, 4, 8, 3, 5, 7, 6, 8, 19, 11, 4 };
    Intent intent;
    private IDemoChart[] mCharts = new IDemoChart[] { new TemperatureChart() };

    private String[] mMenuText;

    private String[] mMenuSummary;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int length = mCharts.length;
        mMenuText = new String[length];
        mMenuSummary = new String[length];

        TemperatureChart obj=new TemperatureChart();
        obj.getArray(pass);
        for(int i=0;i<pass.length;i++)
        {
            Log.i("sanket",pass[i]+"");
        }

        for (int i = 0; i < length; i++) {
            mMenuText[i] = mCharts[i].getName();
            mMenuSummary[i] = mCharts[i].getDesc();
        }
        setListAdapter(new SimpleAdapter(this, getListValues(),
                android.R.layout.simple_list_item_2, new String[] {
                        IDemoChart.NAME, IDemoChart.DESC }, new int[] {
                        android.R.id.text1, android.R.id.text2 }));
    }

    private List<Map<String, String>> getListValues() {
        List<Map<String, String>> values = new ArrayList<Map<String, String>>();
        int length = mMenuText.length;
        for (int i = 0; i < length; i++) {
            Map<String, String> v = new HashMap<String, String>();
            v.put(IDemoChart.NAME, mMenuText[i]);
            v.put(IDemoChart.DESC, mMenuSummary[i]);
            values.add(v);
        }
        return values;
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        // intent = new Intent(this, TemperatureChart.class);

        // if (position <= mCharts.length + 1) {

        intent = mCharts[position].execute(this);

        // intent.putExtra("sam", a);
        // Log.i("sanket",a+"");

        // }

        startActivity(intent);
    }
}

现在这是我要这些数组值的第二个类问题是该类在将这些项目填充到数组中之前正在初始化,因此该类中的我的数组为空

package org.achartengine.chartdemo.demo.chart;

import org.achartengine.ChartFactory;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.RangeCategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.util.Log;

/**
 * Temperature demo range chart.
 */
public class TemperatureChart implements IDemoChart {
    // static double b;

    double[] maxValues;

    public void getArray(double array1[]) {

        array1 = new double[12];
        this.maxValues = array1;

        for(int i=0;i<array1.length;i++)
        {
            Log.i("sanket",maxValues[i]+"");
        }
    }


    /**
     * Returns the chart name.
     * 
     * @return the chart name
     */
    public String getName() {
        return "MarkS range chart";
    }

    /**
     * Returns the chart description.
     * 
     * @return the chart description
     */
    public String getDesc() {
        return "The monthly Marks (vertical range chart)";
    }

    /**
     * Executes the chart demo.
     * 
     * @param context
     *            the context
     * @return the built intent
     */
    public Intent execute(Context context) {





        // b = getIntent().getIntExtra("sam", 0);
        // Log.i("sanket",b+"");
        double[] minValues = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        // double[] maxValues = new double[] { 7, 0, 4, 8, 3, 5, 7, 6, 8, 19,
        // 11,
        // 4 };

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        RangeCategorySeries series = new RangeCategorySeries("Marks");
        int length = minValues.length;
        for (int k = 0; k < length; k++) {
            series.add(minValues[k], maxValues[k]);
        }
        dataset.addSeries(series.toXYSeries());
        int[] colors = new int[] { Color.CYAN };
        XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
        setChartSettings(renderer, "Monthly Marks range", "Month",
                "Marks Obtained", 0.5, 12.5, 0, 20, Color.GRAY, Color.LTGRAY);
        renderer.setBarSpacing(0.5);
        renderer.setXLabels(0);
        renderer.setYLabels(10);
        renderer.addXTextLabel(1, "Jan");
        renderer.addXTextLabel(3, "Mar");
        renderer.addXTextLabel(5, "May");
        renderer.addXTextLabel(7, "Jul");
        renderer.addXTextLabel(10, "Oct");
        renderer.addXTextLabel(12, "Dec");
        renderer.addYTextLabel(5, "OK");
        renderer.addYTextLabel(10, "GOOD");
        renderer.addYTextLabel(20, "Nice");
        renderer.setMargins(new int[] { 30, 70, 10, 0 });
        renderer.setYLabelsAlign(Align.RIGHT);
        SimpleSeriesRenderer r = renderer.getSeriesRendererAt(0);
        r.setDisplayChartValues(true);
        r.setChartValuesTextSize(12);
        r.setChartValuesSpacing(3);
        r.setGradientEnabled(true);
        r.setGradientStart(-20, Color.BLUE);
        r.setGradientStop(20, Color.GREEN);
        return ChartFactory.getRangeBarChartIntent(context, dataset, renderer,
                Type.DEFAULT, "Marks Range");
    }

    protected void setChartSettings(XYMultipleSeriesRenderer renderer,
            String title, String xTitle, String yTitle, double xMin,
            double xMax, double yMin, double yMax, int axesColor,
            int labelsColor) {
        renderer.setChartTitle(title);
        renderer.setXTitle(xTitle);
        renderer.setYTitle(yTitle);
        renderer.setXAxisMin(xMin);
        renderer.setXAxisMax(xMax);
        renderer.setYAxisMin(yMin);
        renderer.setYAxisMax(yMax);
        renderer.setAxesColor(axesColor);
        renderer.setLabelsColor(labelsColor);
    }

    protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        renderer.setAxisTitleTextSize(16);
        renderer.setChartTitleTextSize(20);
        renderer.setLabelsTextSize(15);
        renderer.setLegendTextSize(15);
        int length = colors.length;
        for (int i = 0; i < length; i++) {
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(colors[i]);
            renderer.addSeriesRenderer(r);
        }
        return renderer;
    }
}

您可以使用静态变量和方法来解决您的问题。 将要共享的变量设为静态。 还要在同一类中编写静态方法以获取它。 并从另一个类访问该方法。您可以在此处查看示例: http ://www.daniweb.com/software-development/java/threads/326941/passing-data-between-classes。

不知道您在这里做什么:

public void getArray(double array1[]) {

    array1 = new double[12];
    this.maxValues = array1;

    for(int i=0;i<array1.length;i++)
    {
        Log.i("sanket",maxValues[i]+"");
    }
}

您将使用新的double [12]覆盖输入参数array1,因此将覆盖this.maxValues。

//Create a public class:
public class Values{

public static int[] val = null;

}


//Set array in one class:
Values.val = int[] arr1;//arr1 containing your values


//Get array in another class:
int[] arr2 = Values.val;

如果将数组转换为int arraylist,然后在活动之间传递它,然后在其他活动中将其转换回array,则效果会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM