Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改布局的内容?_Java_Android - Fatal编程技术网

Java 如何更改布局的内容?

Java 如何更改布局的内容?,java,android,Java,Android,在我的Android应用程序中,我有一个跟踪器活动,其中我根据所选日期从sqlite数据库中检索运动信息(姓名、周期、燃烧的卡路里),并以线性布局显示这些信息,我的问题是,当用户选择新日期时,检索到的数据将显示在另一个“新”中布局显示在旧布局的上方,但实际上我想做的是在同一布局上显示新检索到的数据“使用新检索到的数据更改布局内容”,我尝试了“删除所有视图”方法,但它不起作用,因为数据出现几分钟后就消失了 如何做到这一点:当用户选择一个新日期时,新检索到的数据显示在同一布局上“用新数据刷新旧数据”

在我的Android应用程序中,我有一个跟踪器活动,其中我根据所选日期从sqlite数据库中检索运动信息(姓名、周期、燃烧的卡路里),并以线性布局显示这些信息,我的问题是,当用户选择新日期时,检索到的数据将显示在另一个“新”中布局显示在旧布局的上方,但实际上我想做的是在同一布局上显示新检索到的数据“使用新检索到的数据更改布局内容”,我尝试了“删除所有视图”方法,但它不起作用,因为数据出现几分钟后就消失了

如何做到这一点:当用户选择一个新日期时,新检索到的数据显示在同一布局上“用新数据刷新旧数据”,而不是在新布局中显示它们。我怎么能做到?请帮帮我

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 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);

}}

这是因为您将这些变量定义为静态变量:

public static int icon;
public static String data_text;
public static String text;
因此,仅为该类的所有实例创建这些变量的一个实例。因此,每次创建新的
配置文件时,它们都会被新值覆盖。您需要从变量声明中删除
static
关键字:

public int icon;
public String data_text;
public String text;
然后,您不能以静态方式访问它们,因此您需要像这样访问:

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

如果您想了解更多关于
静态的

Its的信息,请查看此项,因为您将这些变量定义为静态:

public static int icon;
public static String data_text;
public static String text;
因此,仅为该类的所有实例创建这些变量的一个实例。因此,每次创建新的
配置文件时,它们都会被新值覆盖。您需要从变量声明中删除
static
关键字:

public int icon;
public String data_text;
public String text;
然后,您不能以静态方式访问它们,因此您需要像这样访问:

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

如果您想了解更多有关
静态

我正在尝试这样做:当用户单击列表项时,活动级别将出现一个对话框,然后用户将选择“更新”他的活动级别,然后我想将此值放入行数据中,是否可以这样做?我该怎么做?我尝试了这种方法public void onClick(DialogInterface dialog,int-which){profile_data[4]=newprofilelistItems(R.drawable.arrow_left,Activity_level[which],“ActivityLevel”);但我没有尝试这样做:当用户单击列表项时,活动级别将出现一个对话框,然后用户将选择“更新”他的活动级别,然后我想把这个值放在行数据中,这有可能吗?我怎么做?我尝试了这种方法public void onClick(DialogInterface dialog,int which){profile_data[4]=new ProfileListItems(R.drawable.arrow_left,activity_level[which],“ActivityLevel”);但它不起作用