2014-01-29 5 views
1

Я создаю приложение, которое отображает графики ввода, заданные пользователем. Граф рисуется на линейной компоновке, используя некоторую библиотеку. Я хочу, чтобы линейный макет перерисовывал новую функцию, запрошенную пользователем, каждый раз, когда пользователь нажимает кнопку рисования. Я пробовал использовать layout.invalidate(), но это не работает в моем app.please помощи ..below является код snipet:Я хочу перерисовать на вид Android-программирование

bb.setOnClickListener(new OnClickListener() 
{ 
public void onClick(View v) 
    { 
     String text = ee.getText().toString(); // getting the user expression input 
     LinearLayout layout = (LinearLayout) findViewById(R.id.graph2); 
     layout.setVisibility(View.INVISIBLE); 

     Expression data = Expression.createExpression(text) ; 

     if(text == ""){ 
      Toast.makeText(getApplicationContext(), "please enter a valid equation", Toast.LENGTH_LONG).show(); 
      layout.setVisibility(View.INVISIBLE); 
      } 
     else 
      { 
       draw(data) ; 
       layout.setVisibility(View.VISIBLE); 
       layout.invalidate(); 
      }              
     } 
     }); 

public void draw(Expression x) 
    { 
     final GraphView graphing = new LineGraphView(this, "sketch"); 
     int num = 350; 
     GraphViewData[] array = new GraphViewData[num]; 
     double w=0; 
     for (int i=0; i<num; i++) { 
      w += 0.2; 
      array[i] = new GraphViewData(i, x.evaluate(w,0,0)); } 


     // add data 
     graphing.addSeries(new GraphViewSeries(array)); 
     // set view port, start=2, size=40 
     graphing.setViewPort(0, 120); 
     graphing.getGraphViewStyle().setNumHorizontalLabels(2); 
     graphing.setScrollable(true); 
     // optional - activate scaling/zooming 
     graphing.setScalable(true); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.graph2); 
     layout.addView(graphing); 
     layout.invalidate(); 
    } 

ответ

0

Первое:

graphing.setViewPort(0, 120); 

это правильно? Мне кажется, что вы установили ширину окна на 0.

Затем вы уверены, что не хотите отбрасывать старые результаты, удаляя старые представления из макета?

Последнее, макет автоматически недействителен при добавлении или удалении дочерних представлений.

Смежные вопросы