38200

How to change the content of the layout?

Question:

In my Android application i have a tracker activity in which i retrieve the exercises information(name , period , burned calories) from the sqlite data base based on the selected date and display these information in a linear layout , and my problem that as the user select new date the retrieved data are displayed in another "new " layout appear above the old one but what actually i want to do is to display the new retrieved data on the same layout " change the layout content with the new retrieved data ", i have tried the remove all views method but it didn't work since the data appear for few minutes then dis appear

How i can do this: when the user select a new date the new retrieved data displayed on the same layout " refresh the old data by the new one " not to display them in anew layout . how i can do that ? please help me...

<strong>java code</strong>

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 LinearLayout details; private int year,month,day; private double tot_excals_burned; private Calendar localCalendar; private static final int DATE_DIALOG_ID=0; private boolean has_ex_details; private boolean has_meal_details=false; private Cursor exercises_cursor; 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(); RefreshNoDataImage(); } }); 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(); RefreshNoDataImage(); } }); details=(LinearLayout)findViewById(R.id.ll_details); notes=(LinearLayout)findViewById(R.id.ll_notes); excercises_LL=(LinearLayout)findViewById(R.id.ll_exercises); nodata=(ImageView)findViewById(R.id.nodata_imgV); RefreshExercisesData(); RefreshNoDataImage(); } 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() { tot_excals_burned=0; DBAdapter db = new DBAdapter(this); db.open(); String selected_date= date_btn.getText().toString(); Log.e("date", selected_date); exercises_cursor = db.getExerciseInfo(selected_date); if(exercises_cursor.getCount() !=0 ) { has_ex_details=true; details.setVisibility(0); nodata.setVisibility(8); notes.setVisibility(0); //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 (exercises_cursor.moveToFirst()) { do { content_LL=new LinearLayout(this); ex_name=new TextView(this); ex_name.setText( exercises_cursor.getFloat(1)+"," +exercises_cursor.getString(0) + "min "); ex_name.setTextColor(R.color.black); content_LL.addView(ex_name,0); ex_BCals=new TextView(this); ex_BCals.setText(Round(exercises_cursor.getFloat(2)) +" "); ex_BCals.setTextColor(R.color.color_black); content_LL.addView(ex_BCals,1); tot_excals_burned = tot_excals_burned+exercises_cursor.getFloat(2); excercises_LL.addView(content_LL, i); i++; } while (exercises_cursor.moveToNext()); } tot_ex_cals_value.setText(Round(tot_excals_burned) ); } else if(exercises_cursor.getCount()==0 ||tot_excals_burned==0) { has_ex_details=false; RefreshNoDataImage(); } exercises_cursor.close(); exercises_cursor.deactivate(); db.close(); } private void RefreshNoDataImage() { if(has_ex_details==false && has_meal_details==false) { notes.setVisibility(8); excercises_LL.setVisibility(8); nodata.setImageResource(R.drawable.bg_nodata); nodata.setVisibility(View.VISIBLE); } else nodata.setVisibility(8); } 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(); RefreshNoDataImage(); } }; private String Round(double num) { return String.format("%.1f%n", num); }}

Answer1:

Its because you defined these variables as static:

public static int icon; public static String data_text; public static String text;

<strong>As a result only one instance of those variables are created for all instances of that class.</strong> So when you create a new Profile each time, they are overwritten with new values. You need to remove the static keyword from variable declarations:

public int icon; public String data_text; public String text;

Then you cannot access them as static so you need to access like this:

Profile pli = data[position]; holder.imgIcon.setImageResource(pli.icon); holder.Datatxt.setText(pli.data_text); holder.txt.setText(pli.text);

Check out this if you want to learn more about static: <a href="http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html" rel="nofollow">http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html</a>

Recommend

  • Bitmap of Android WebView is blank
  • JMH: don't take into account inner method time
  • Separate float into digits
  • Error when trying to send an email using Gmail API in Java
  • Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2
  • Facebook API: cannot login on Android
  • How to set (Text)View attributes programmatically?
  • Configuring a TreeView which scans Local fie system to only include folders which have a file type
  • java.io.EOFException when sending serialized data to a servlet
  • android.app.Application cannot be cast to com.example..AnalyticsApplication
  • How to use getFilter form Listadapter
  • Why is the following two duplicate finder algorithms have different time complexity?
  • Where does the file get saved using “File file = new file(filename)” in Android
  • Android libgdx prefs getting lost
  • Is there a way to get the process ID of a console program I've just started in the background?
  • Extend Name Box
  • addressing in assembler
  • data.table replicate rows after join?
  • JavaScript overloading with a callback
  • What is the quartz default thread count
  • how to increment a message header
  • Entity Framework ObjectContext: Concurrency
  • MVC - @Html.CheckBoxFor
  • drawing random circles, storing their coorindates in an array
  • Regarding starting the threads on a condition
  • Linq Merge lists
  • presentShareDialogWithParams posts to FB wall, but callback handler results say error
  • System.InvalidCastException: Specified cast is not valid
  • How can I extract results of aggregate queries in slick?
  • OOP Javascript - Is “get property” method necessary?
  • how to adjust image in a panel in Java swing?
  • PHP - How to update data to MySQL when click a radio button
  • req.body is undefined - nodejs
  • Possible to stop flickering java tooltip in heavyweight mode?
  • sending/ receiving email in Java
  • How to delete a row from a dynamic generate table using jquery?
  • Proper way to use connect-multiparty with express.js?
  • JTable with a ScrollPane misbehaving
  • Bitwise OR returns boolean when one of operands is nil
  • Checking variable from a different class in C#