来自适配器

时间:2017-10-30 02:15:36

标签: android listview android-dialog custom-adapter

我正在为大学制作Android应用程序。应用程序是关于健身(跟踪大卡,锻炼......)。我已经卡住了我要为我的适配器notifyDatasetChange的部分。在我的活动中我有2个列表视图(第一个是显示练习,第二个是显示今天锻炼的选定练习)。当用户为自己“创建”新类型的练习时,我轻松地更新了ListView,因为Arraylist并从当前活动调用,但是对于第二个ListView,我在其适配器类中创建了Dialog,我希望关闭该对话框以更新ListView。这是我的代码和类:

public class MyWorkoutActivity extends AppCompatActivity {

ListView lv;
ListView lvsess;
Button create;

@Override
public void onBackPressed(){
    finish();

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_workout);
    create=(Button) findViewById(R.id.btn_addexercise);
    WorkoutDay workoutDay = SugarRecord.findById(WorkoutDay.class, (long) 1);
    List<WorkoutDay> workoutDayArrayList = new ArrayList<>();
    if(workoutDay.getWorkouts()!="") {
        String[] workouts = workoutDay.getWorkouts().split(":");
        String[] sets = workoutDay.getSets().split(":");
        String[] reps = workoutDay.getReps().split(":");
        String[] kgs = workoutDay.getKgs().split(":");
        String[] duration = workoutDay.getDuration().split(":");

        for (int i = 0; i < workouts.length; i++) {

            workoutDayArrayList.add(new WorkoutDay(workouts[i],sets[i],reps[i],kgs[i],duration[i]));


        }
    }
    final ArrayList<WorkoutDay> ddd = new ArrayList<>();
    ddd.addAll(workoutDayArrayList);



    List<Exercise> exerciseList = Exercise.listAll(Exercise.class);
    final ArrayList<Exercise> exerciseArrayList= new ArrayList<>();
    exerciseArrayList.addAll(exerciseList);
    lv=(ListView) findViewById(R.id.lv_exercises);
    lvsess=(ListView)findViewById(R.id.lv_currentsess);
   final SessionAdapter sessionAdapter = new SessionAdapter(this,ddd);
    final ExerciseAdapter exerciseAdapter= new ExerciseAdapter (this,exerciseArrayList);
    lv.setAdapter(exerciseAdapter);
    lvsess.setAdapter(sessionAdapter);






    create.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            List<String> cathegories = new ArrayList<String>();
            cathegories.add("Chest");
            cathegories.add("Biceps");
            cathegories.add("Triceps");
            cathegories.add("Legs");
            cathegories.add("Core");
            cathegories.add("Abdomens");
            cathegories.add("Cardio");
            cathegories.add("Free style");
            final Dialog addyourown= new Dialog(MyWorkoutActivity.this);
            addyourown.setTitle("Add your exercise");
            addyourown.setContentView(R.layout.addyourownex);
            Button  btn = (Button)addyourown.findViewById(R.id.btn_dialog_add);
            final EditText et = (EditText)addyourown.findViewById(R.id.et_dialog_insertname);
            final Spinner spinner = (Spinner)addyourown.findViewById(R.id.sp_cath);
            ArrayAdapter<String> adapter ;
            adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item,cathegories);
            spinner.setAdapter(adapter);
            addyourown.show();

            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(et.getText().toString().isEmpty()){

                        Toast.makeText(getApplicationContext(),"EMPTY INPUT",Toast.LENGTH_SHORT).show();


                    }else {
                        Exercise exercise = new Exercise(et.getText().toString(), spinner.getSelectedItem().toString());
                        exercise.save();
                        exerciseArrayList.add(exercise);
                        exerciseAdapter.notifyDataSetChanged();
                        addyourown.cancel();
                    }

                }
            });




        }
    });








} 

和我的适配器类,带对话框

public class ExerciseAdapter extends ArrayAdapter<Exercise> {


public Dialog newDialog;



public ExerciseAdapter(@NonNull Context context, ArrayList<Exercise> exercises) {
    super(context,0,exercises);
}

@Override
    public View getView(int position, View convertView, ViewGroup parent){
        final Exercise exercise = getItem(position);
    if(convertView==null){
        convertView= LayoutInflater.from(getContext()).inflate(R.layout.exercises_layout,parent,false);
    }

TextView name = (TextView)convertView.findViewById(R.id.tv_exercise);
ImageButton ib= (ImageButton)convertView.findViewById(R.id.ib_plus);

name.setText(exercise.getName());

ib.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        newDialog = new Dialog(v.getRootView().getContext());
        if(exercise.getCathegory().equals("Cardio")) {
            newDialog.setContentView(R.layout.cardio_layout);
            final EditText duration = (EditText)newDialog.findViewById(R.id.et_duration);
            Button bt = (Button) newDialog.findViewById(R.id.btn_carconfirm);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if(duration.getText().toString().equals("")){
                        Toast.makeText(getContext(),"EMPTY INPUT",Toast.LENGTH_SHORT).show();
                    }else {
                        WorkoutDay workoutDay = SugarRecord.findById(WorkoutDay.class,(long)1);
                        workoutDay.extendCardio(exercise.getName(),duration.getText().toString());
                        workoutDay.save();
                        newDialog.cancel();
                    }
                }
            });
        } else {
            newDialog.setContentView(R.layout.instervalue_exercises);
           final EditText sets = (EditText)newDialog.findViewById(R.id.et_series);
            final EditText reps = (EditText)newDialog.findViewById(R.id.et_reps) ;
           final EditText kgs = (EditText)newDialog.findViewById(R.id.et_kg);
            Button bt = (Button) newDialog.findViewById(R.id.btn_confirm);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(sets.getText().toString().equals("") || reps.getText().toString().equals("") || kgs.getText().toString().equals("")){
                        Toast.makeText(getContext(),"EMPTY INPUT",Toast.LENGTH_SHORT).show();
                    }else {
                        WorkoutDay workoutDay = SugarRecord.findById(WorkoutDay.class,(long)1);
                        workoutDay.extendExercise(exercise.getName(),sets.getText().toString(),reps.getText().toString(),kgs.getText().toString());
                        workoutDay.save();
                        newDialog.cancel();

                    }

                }
            });


        }
        newDialog.show();
        }
});

  return convertView;}

0 个答案:

没有答案