1

私は、バックエンド ロジックによって 1 つのカスタム ビューが更新されるアプリケーションに取り組んでいます。カスタムビューはonResume()メソッドで細かく更新しますが、 では更新できませんview.invalidate();。そのビューがボタンのクリックで更新されるようにしたい。

コード スニペットは次のとおりです。

public class ChartDemo extends Activity {
private IDemoChart mChart;

Button displayGraph, reloadGraph;
LinearLayout linearLayout;
View view;

Random randomData, randomBattery;
int data, battery;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mChart = new SalesStackedBarChart();

    reloadGraph = (Button) findViewById(R.id.reloadView);

    linearLayout = (LinearLayout) findViewById(R.id.linearLayout);

    view = new View(ChartDemo.this);
    loadGraphWithValues();

    reloadGraph.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            view.invalidate();
            loadGraphWithValues();
            // view = mChart.execute(ChartDemo.this);
        }
    });

    linearLayout.addView(view);
}

public void loadGraphWithValues() {
    data = generateDataValue();
    battery = generateBatteryValue();

    ListData list = new ListData();
    list.setData(data, battery);

    SalesStackedBarChart.values.add(list);

    view = mChart.execute(ChartDemo.this);
}

public int generateBatteryValue() {
    // TODO Auto-generated method stub
    randomData = new Random();
    return randomData.nextInt(100) + 1;
}

public int generateDataValue() {
    // TODO Auto-generated method stub
    randomBattery = new Random();
    return randomBattery.nextInt(100) + 1;
}

public class ListData {
    double data;
    double battery;

    // getter and setter methods..
}

}

前もって感謝します..

4

1 に答える 1

0
view.invalidate();
loadGraphWithValues();

最初にビューを更新してから、それ自体を再描画するように指示するため、これらはおそらく切り替える必要があります。また、あなたは何mChartですか?何か非同期ですか?

編集:ここだと思います:

view = mChart.execute(ChartDemo.this);

新しいビューを作成していますが、実際にはレイアウトにアタッチしていません。返されたビューをレイアウトの既存のビューの代わりに配置してみてください。

于 2013-07-23T07:28:58.090 に答える