0

Ich versuche, eine Eingabe aus dem Feld editText zu erhalten, um sie auf meine recyclerView zu aktualisieren. Was muss ich meinem Code hinzufügen oder wegnehmen, damit dies geschieht? Ich verwende eine Arraylist mit einigen Daten bereits darin. Jetzt will ich und neue Titel auf der Liste. Ich habe es eingerichtet, wenn Benutzer den FAB antippen, ein Alarmdialog zeigt an, wo sie einen Namen eingeben können. Sobald der Benutzer auf Ja gedrückt hat, möchte ich, dass dieser Name zur RecyclerView geht.EditText-Eingabe zu RecyclerView hinzufügen, wenn in AlertDialog eine positive Schaltfläche ausgewählt ist

public class Workout extends Fragment { 
 
    RecyclerView recyclerView; 
 
    RecyclerView.Adapter adapter; 
 
    RecyclerView.LayoutManager layoutManager; 
 
    ArrayList <RoutineList> list = new ArrayList <RoutineList>(); 
 
    String[] name; 
 

 

 
    @ 
 
    Override 
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 

 
    final View rootView = inflater.inflate(R.layout.workout_list_activity, container, false); 
 

 
    FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.fab); 
 
    fab.setOnClickListener(new View.OnClickListener() {@ 
 
     Override 
 
     public void onClick(View view) { 
 
     final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
 
     // Get the layout inflater 
 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
 

 
     // Inflate and set the layout for the dialog 
 
     // Pass null as the parent view because its going in the dialog layout 
 
     view = inflater.inflate(R.layout.dialog_fab, null); 
 
     final EditText routineName = (EditText) view.findViewById(R.id.workoutTitle); 
 
     builder.setView(view) 
 

 
     // Add action buttons 
 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
 

 
      public void onClick(DialogInterface dialog, int id) { 
 
       if (!TextUtils.isEmpty(routineName.getText().toString())) { 
 
       // This block is responsible for checking if editText is empty and carrying out the action 
 

 

 
       } 
 
      } 
 
      }) 
 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
 
      public void onClick(DialogInterface dialog, int id) { 
 
       // User cancelled the dialog 
 
      } 
 
      }); 
 
     // Create the AlertDialog object and return it 
 
     AlertDialog dialog = builder.create(); 
 
     dialog.show(); 
 

 
     final Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
 
     routineName.addTextChangedListener(new TextWatcher() {@ 
 
      Override 
 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
 

 
      } 
 

 
      @ 
 
      Override 
 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
 

 

 
      } 
 

 
      @ 
 
      Override 
 
      public void afterTextChanged(Editable s) { 
 

 
      } 
 
     }); 
 

 

 

 
     } 
 
    }); 
 

 

 
    name = VersionModel.data; 
 
    for (String Name: name) { 
 
     RoutineList routineList = new RoutineList(Name); 
 
     list.add(routineList); 
 
    } 
 

 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView); 
 
    layoutManager = new LinearLayoutManager(getActivity()); 
 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
 

 
    recyclerView.setHasFixedSize(true); 
 

 
    adapter = new RoutineListAdapter(list, getActivity()); 
 
    recyclerView.setAdapter(adapter); 
 
    return rootView; 
 
    } 
 

 
    public static Workout newInstance() { 
 
    Workout workout = new Workout(); 
 
    return workout; 
 
    } 
 
}

public class RoutineListAdapter extends RecyclerView.Adapter <RoutineListAdapter.RoutineListViewHolder> { 
 
    ArrayList <RoutineList> routineLists = new ArrayList <RoutineList>(); 
 
    Context context; 
 

 

 

 
    public RoutineListAdapter(ArrayList <RoutineList> routineLists, Context context) { 
 

 
    this.routineLists = routineLists; 
 
    this.context = context; 
 

 
    } 
 

 
    public RoutineListAdapter(ArrayList <RoutineList> list) {} 
 

 
    @ 
 
    Override 
 
    public RoutineListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
 
    View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false); 
 
    RoutineListViewHolder routineListViewHolder = new RoutineListViewHolder(view, context, routineLists); 
 

 
    return routineListViewHolder; 
 
    } 
 

 
    @ 
 
    Override 
 
    public void onBindViewHolder(RoutineListViewHolder holder, int position) { 
 
    RoutineList routineList = routineLists.get(position); 
 
    holder.routine_name.setText(routineList.getName()); 
 

 

 
    } 
 

 

 
    @ 
 
    Override 
 
    public int getItemCount() { 
 
    return routineLists.size(); 
 
    } 
 

 

 
    public static class RoutineListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
 

 
    TextView routine_name; 
 
    ArrayList <RoutineList> routineLists = new ArrayList <RoutineList>(); 
 
    Context context; 
 

 
    public RoutineListViewHolder(View view, Context context, ArrayList <RoutineList> routineLists) { 
 
     super(view); 
 
     this.routineLists = routineLists; 
 
     this.context = context; 
 

 
     view.setOnClickListener(this); 
 
     routine_name = (TextView) view.findViewById(android.R.id.text1); 
 
    } 
 

 

 
    @ 
 
    Override 
 
    public void onClick(View v) { 
 
     int position = getAdapterPosition(); 
 
     RoutineList routineList = this.routineLists.get(position); 
 
     Intent intent = new Intent(this.context, RoutineDetails.class); 
 
     intent.putExtra("name", routineList.getName()); 
 
     this.context.startActivity(intent); 
 

 
    } 
 
    } 
 
}

public class RoutineList { 
 
    public RoutineList(String name){ 
 
     this.setName(name); 
 
    } 
 
    private String name; 
 

 
    public String getName() { 
 
     return name; 
 
    } 
 

 
    public void setName(String name) { 
 
     this.name = name; 
 
    } 
 
}

Hier Arraylist schon zieht Daten gemacht.

public class VersionModel { 
 
    public static final String[] data = { 
 
    "Full Body", "Power Legs", "Traps Day", "Arm Blast", "Butt Toner", 
 
    "Fat Killer", "Lower Body", "Big Arms", "Tri Day", 
 
    "Bigger Chest", "Cardio", "Back Blast", "Forearms", "Calf Day", "Train for 5K" 
 
    }; 
 

 
}

Antwort

0

// Fügen Sie den neuen Programmnamen zu Ihrer Liste list.add (routineName);

// Then notify the your adapter that list has changed 
adapter.notifyDataSetChange(); 
+0

würde ich hinzufügen list.add (routineName); unter dem OnClick oder später im Code? – hilllomax

+0

Sie können es direkt nachdem Sie überprüft haben, dass der routineName nicht leer ist – thunder413

+0

OK, das ist, wo ich es platziere und es gibt mir eine folgende Nachricht hinzufügen (Paketname.Routine) in Arraylist kann nicht angewendet werden (android.widget.EditText) dann, wenn ich Alt drücken + Enter sagt Feldtyp ändern zu 'java.util.ArrayList hilllomax

Verwandte Themen