Click here to Skip to main content
16,019,764 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am trying to display a user's exercise data on a specific date from a sqlite database like this :

Exercises 252.5
walking,30min 70
Running,30min 125.4
treadmill.30min 57.1

in each time the user select a date i retrieve the information of all exercises that are stored in that date and display them in this format , but these information appear only when i remove the excercises_LL.removeAllViews() statement from my code ,and in this case as the user select a date the returned data displayed above the previous one , but i want to do this : in each time the user choose a date the screen content is refreshed so it contains only the data of all exercises returned in that date otherwise " if there is no data returned from the data base( cursor is null)" i want to change the back ground to an image says that there is no data has been inserted .

how i can refresh the content of screen ? and change the screen background?
please help me how i can do that?



this is my code

Java
public class Tracker extends BaseActivity
{
    private Button date_btn;
    private ImageButton  left_btn;
    private ImageButton  right_btn;
    private ImageView    nodata;
    private TextView ex_name;
    private TextView ex_BCals;
    
    private LinearLayout  excercises_LL;
    private  LinearLayout content_LL ;
    private LinearLayout  notes;
    
    private int year,month,day;
    private double  tot_excals_burned;
    private Calendar  localCalendar; 
    private static final int DATE_DIALOG_ID=0;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.tracker);
    
    
    
        date_btn=(Button)findViewById(R.id.btn_date);
        date_btn.setText(FormatDate());
        date_btn.setOnClickListener(new View.OnClickListener() {
    
            public void onClick(View v) {
                localCalendar = Calendar.getInstance(); 
                year = localCalendar.get(1);
                month= localCalendar.get(2);
                day  =  localCalendar.get(5);
                showDialog(DATE_DIALOG_ID);
            }
    });


    left_btn=(ImageButton)findViewById(R.id.btn_left);
    left_btn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            localCalendar.add(5, -1);
            date_btn.setText(FormatDate(localCalendar,"EEEE, d/MMM/yyyy"));
            RefreshExercisesData();

        }
    });

    right_btn=(ImageButton)findViewById(R.id.btn_right) ;
    right_btn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            localCalendar.add(5, 1);
            date_btn.setText(FormatDate(localCalendar,"EEEE, d/MMM/yyyy"));
            RefreshExercisesData();
        }
    });


    RefreshExercisesData();
}

private String  FormatDate()
{   

    localCalendar = Calendar.getInstance();
    return new  SimpleDateFormat("EEEE, d/MMM/yyyy").format(localCalendar.getTime());

}

private String FormatDate(int year, int month, int day)
{   
    localCalendar = Calendar.getInstance();
    localCalendar.set(year, month, day);

    return new  SimpleDateFormat("EEEE, d/MMM/yyyy").format(localCalendar.getTime());
}

private String FormatDate(Calendar   calendar , String  format)
{

    return new  SimpleDateFormat(format).format(calendar.getTime());

}






private void RefreshExercisesData()
{   
    nodata=(ImageView)findViewById(R.id.no_data_image);

    excercises_LL=(LinearLayout)findViewById(R.id.ll_exercises);
    tot_excals_burned=0;

    DBAdapter db = new DBAdapter(this);
    db.open();
    String selected_date= date_btn.getText().toString();
    Log.e("date", selected_date);


    Cursor c = db.getExerciseInfo(selected_date);

    if(c !=null)
    {

        nodata.setVisibility(8);
        excercises_LL.removeAllViews();
        excercises_LL.setWeightSum(1.0F);
        excercises_LL.setVisibility(0);
        excercises_LL.setOrientation(LinearLayout.VERTICAL);

        LayoutInflater exc_LayoutInflater = (LayoutInflater)getApplicationContext().getSystemService("layout_inflater");


        LinearLayout layout = (LinearLayout)exc_LayoutInflater.inflate(R.layout.tracker_header_item,null);
        TextView   tot_ex_cals_value=((TextView)(layout).findViewById(R.id.tv_tot_cals_value));
        TextView   exs_title=((TextView)(layout).findViewById(R.id.tv_item_title)) ;
        exs_title.setText("Exercises ");

        (layout).setPadding(0, 36, 0, 0);
        excercises_LL.addView((View)layout, 0);
        int i = 1;

        if (c.moveToFirst())
        {
            do 
            {
                content_LL=new LinearLayout(this);

                ex_name=new TextView(this);
                ex_name.setText( " "+c.getFloat(1)+", " +c.getString(0) + " minute");
                ex_name.setTextColor(R.color.black);
                content_LL.addView(ex_name,0);
                ex_BCals=new TextView(this);
                ex_BCals.setText(Round(c.getFloat(2)) +" ");
                ex_BCals.setTextColor(R.color.black);
                tot_excals_burned = tot_excals_burned+c.getFloat(2);

                content_LL.addView(ex_BCals,1);
                excercises_LL.addView(content_LL, i);


                i++; 

            }
            while (c.moveToNext());

        }
        tot_ex_cals_value.setText(Round(tot_excals_burned) + " cals");

    }
    else
    {    
        nodata.setVisibility(0);
    }
    c.close();
    c.deactivate();
    db.close();

}



protected Dialog onCreateDialog(int id)
{
    switch (id) {

    case DATE_DIALOG_ID:
        return new DatePickerDialog(this, mDateSetListener, this.year, this.month, this.day);
    }
    return null;
}

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker paramDatePicker, int year, int monthofYear, int dayofMonth)
    {
        Tracker.this.year=year;
        month=monthofYear;
        day=dayofMonth;
        date_btn.setText(FormatDate(year,month,day));
        RefreshExercisesData();

    }

};


private  String Round(double num) {
    return String.format("%.1f%n", num);

}}
Posted
Updated 12-Jun-12 0:12am
v2

1 solution

To handle the image, I would use an ImageView in your layout, and the change its visibility using
Java
imageView.setVisibility(showImage ? View.VISIBLE : View.GONE);
and wrap your text data in a LinearLayout and do the opposite on that.

About your other problem, I don't fully understand what you mean, but have you considered using a ListView and a custom ArrayAdapter? Seems to be the perfect match.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900