0

現在、Androidで1つのWebサービスを使用しています。そのWebサービスには、それぞれ2012年1月1日と2012年7月7日の2つの入力値があります。

呼び出しボタンをクリックし、これらを入力値として指定すると、プロジェクトにいくつかの棒グラフが表示されます。正常に機能しています。ここでは、これらの入力値を取得するために2つの編集テキストボックスを使用しています。

しかし、編集テキストボックスを使用する代わりに、日付ピッカーウィジェットを使用したいので、日付ピッカーウィジェットをドラッグして、いくつかのコードを実行しました。

しかし、問題は、入力値が完全に数値から外れていて、バックスラッシュで正しいかということです。しかし、日付ピッカーウィジェットでは、文字と数値の組み合わせで入力値が表示されますが、日付ピッカーウィジェットのみを使用する必要があります。

日付ピッカーウィジェットは、この形式dd-mm-yyyyです。例:-01-jan-1990

しかし、上記の形式を1990年1月1日に変換する必要があります。これを行う方法?

参考のために私の情報源を見つけてください

Chart.java

public class Chart extends Activity 
{
//EditText edt1, edt2;

DatePicker dp1,dp2;

TextView txtv1;
Button btn;
Bundle data;

String[] orderNo = new String[20];
int[] freightRate = new int[20];
int[] marginPercent = new int[20];

@Override
public void onCreate(Bundle savedInstanceState)     {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    dp1 = (DatePicker) findViewById(R.id.datePicker_one);
    dp2 = (DatePicker) findViewById(R.id.datePicker_Two);

    String res_1 = dp1.getDayOfMonth()+"/"+dp1.getMonth()+"/"+dp1.getYear();
            String res_2 = dp2.getDayOfMonth()+"/"+dp2.getMonth()+"/"+dp2.getYear();   


            btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            getTMSChart(dp1.getYear(), dp2.getYear());
            Intent intnt = new Intent(v.getContext(), BarGraphActivity.class);
            intnt.putExtras(data);

            startActivity(intnt);
        }
    });
}

public void getTMSChart(int j, int k) 
{

    System.setProperty("http.keepAlive", "false");
    SoapSerializationEnvelope envelope = new   SoapSerializationEnvelope(SoapEnvelope.VER11);

    envelope.dotNet = true;

    String METHOD = "GetTMSChart";
    String NAMESPACE = "http://tempuri.org/";
    String SOAP_ACTION = "http://tempuri.org/GetTMSChart";
    String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";

    SoapObject request = new SoapObject(NAMESPACE, METHOD);

    request.addProperty("FromDate", j);
    request.addProperty("ToDate", k);
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject result = (SoapObject) envelope.bodyIn;
        SoapObject root = (SoapObject) ((SoapObject) (result).getProperty(0)).getProperty("NewDataSet");
        int tablesCount = root.getPropertyCount();

        data = new Bundle();

    for (int i = 0; i < tablesCount; i++) {

    SoapObject table = (SoapObject) root.getProperty(i);
    orderNo[i] = table.getPropertyAsString("Order_No");
    freightRate[i] = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
    marginPercent[i] = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));               

  /*Toast.makeText(getApplicationContext(), "Order No:" + orderNo[i] + "\nFreigtRate:" +     freightRate[i] + "\nMarginPc:" + marginPercent[i], Toast.LENGTH_SHORT).show();*/
        }
        data.putStringArray("orderno", orderNo);
        data.putIntArray("freightrate", freightRate);
        data.putIntArray("marginpercent", marginPercent);
        data.putInt("count",tablesCount);
    }
catch (Exception e) 
{
    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
    e.printStackTrace();
    }   } }

BarGraphActivity.java

public class BarGraphActivity extends Activity {

String[] orderNo = new String[20];
int[] freightRate = new int[20];
int[] marginPercent = new int[20];
int count;
RelativeLayout rltv;

@Override
    public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    final GraphicalView grfv = createIntent(); 

    RelativeLayout rltv = (RelativeLayout)findViewById(R.id.rlyot);
    rltv.addView(grfv);
}

public GraphicalView createIntent()
{
    rltv = (RelativeLayout)findViewById(R.id.rlyot);

    String[] titles = new String[] { "Order's profit of the year", " " };

    Bundle idata = getIntent().getExtras();
    if (idata !=null)
    {
        orderNo = idata.getStringArray("orderno");  
        freightRate = idata.getIntArray("freightrate");
        marginPercent = idata.getIntArray("marginpercent");
        count = idata.getInt("count");

        CategorySeries series = new CategorySeries("Order-FreightRate Graph");

        for ( int i = 0; i < count; i++)
        {
            series.add(orderNo[i], freightRate[i]);


            Thread th = new Thread();
            try 
            {
                Thread.sleep(2000);
                }
            catch (InterruptedException e) 
            {
                e.printStackTrace();
            }
        }


        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        dataset.addSeries(series.toXYSeries());

        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setDisplayChartValues(true);

        //renderer.setChartValuesSpacing(1);

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.addSeriesRenderer(renderer);

        mRenderer.setXLabelsColor(Color.WHITE);
        mRenderer.setYLabelsColor(0,Color.WHITE);

        mRenderer.setZoomButtonsVisible(true);

        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.parseColor("#000000"));

        mRenderer.setBarSpacing(0.7f);

    //  mRenderer.setChartTitleTextSize(20);
    //  mRenderer.setLabelsTextSize(25);
    //  mRenderer.setMarginsColor(Color.WHITE);

final GraphicalView grfv =  ChartFactory.getBarChartView(BarGraphActivity.this, dataset, mRenderer, Type.DEFAULT);
    return grfv;
    }
    return null;
    }
}

何か案が?

貴重なお時間をいただきありがとうございます!..

4

1 に答える 1

1

これはどう:

テキストフィールドを保持し、テキストフィールドを選択すると、[日時ピッカー]ダイアログが表示され、テキストフィールドは日時形式を保持します。

final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
updateDisplay();

および更新表示方法:

private void updateDisplay() {
    checkdate.setText(
            new StringBuilder()
            // Month is 0 based so add 1
            .append(mMonth + 1).append("-")
            .append(mDay).append("-")
            .append(mYear).append(" "));
}

アクティビティにも追加

@Override
protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    switch (id) {
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this,
                mDateSetListener,
                mYear, mMonth, mDay);
 }
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    // TODO Auto-generated method stub
    switch (id) {
    case DATE_DIALOG_ID:
        ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
        break;
    }
}
private DatePickerDialog.OnDateSetListener mDateSetListener =
    new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        updateDisplay();
    }
};

そして、Focusリスナーをテキストフィールドに追加します

textfield1.setOnFocusChangeListener(new OnFocusChangeListener(){
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(hasFocus){
                showDialog(DATE_DIALOG_ID);
            }
        }
    });

あなたが必要なものを願っています。

于 2012-11-21T10:34:16.437 に答える