Счетчик Android в диалоговом окне, когда мы нажимаем на элемент listview, не работает

#java #android #android-listview #android-spinner #android-dialog

#java #Android #android-listview #android-счетчик #android-dialog

Вопрос:

Я начинаю с Android. В activity я создаю listview с пользовательским представлением, при нажатии я открываю диалоговое окно с несколькими вертушками и текстовыми представлениями. Однако мой счетчик не работает. Появляется список счетчиков, но когда я нажимаю, ничего не происходит, и значение по умолчанию не отображается.

Заранее спасибо за вашу помощь!

Вот ссылка на диск, чтобы посмотреть, что происходит: https://drive.google.com/file/d/1t2omOA7gJQJNtTVV6Wig5EShYo5cwj0v/view?usp=sharing

Вот мой код: TeamActivity.java

     
    public class TeamActivity extends AppCompatActivity{
    
        ArrayList<Team> teams;
        static String[] selected;
        static int id_selected;
        Spinner s_p1;
        ArrayAdapter ad_sp1;
        Spinner s_p2;
        Spinner s_p3;
    
        //Constructeur
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_team);
    
            /*Team creation*/
            teams = new ArrayList<Team>();
            int id = 1;
            for (int i = 0; i < participants.size(); i = i   3) {
                teams.add(new Team(id, participants.get(i), participants.get(i   1), participants.get(i   2)));
                id  ;
            }
            /*list view*/
            final ListView listView = (ListView) findViewById(R.id.listView_team);
            // Create the adapter to convert the array to views
            final TeamAdapter adapter = new TeamAdapter(this, teams);
            // Attach the adapter to a ListView
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, final View view, int i, long l) {
                    id_selected = i;
                    AlertDialog.Builder d_builder = new AlertDialog.Builder(listView.getContext());
                    View d_order = getLayoutInflater().inflate(R.layout.dialog_order,null);
    
                    s_p1 = (Spinner) d_order.findViewById(R.id.spinner_p1);
    
                    selected = new String[3];
                    ad_sp1 = new ArrayAdapter<String>(listView.getContext(),android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.value));
                    ad_sp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    s_p1.setAdapter(ad_sp1);
    
    
                    d_builder.setPositiveButton("Validez", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            adapter.notifyDataSetChanged();
                            dialog.dismiss();
                        }
                    });
    
                    d_builder.setView(d_order);
                    AlertDialog dialog = d_builder.create();
                    dialog.show();
    
                }
            });
    
        }
    }
 

layout/dialog_order.xml

     <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFFFF">
    
            <Spinner
                android:id="@ id/spinner_p3"
                android:layout_width="84dp"
                android:layout_height="41dp"
                android:layout_marginStart="6dp"
                android:layout_marginTop="116dp"
                android:layout_toEndOf="@ id/textView_fname_p3"
                android:backgroundTint="#000000"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
    
            <TextView
                android:id="@ id/textView_name_p1"
                android:layout_width="237dp"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginStart="20dp"
                android:layout_marginTop="16dp"
            android:text="TextView"
            android:textSize="30sp"
            app:layout_constraintTop_toTopOf="parent"
            tools:layout_editor_absoluteX="25dp" />
    
        <TextView
            android:id="@ id/textView_fname_p1"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="268dp"
            android:layout_marginTop="16dp"
            android:text="TextView"
            android:textSize="30sp"
            app:layout_constraintTop_toTopOf="parent"
            tools:layout_editor_absoluteX="276dp" />
    
        <TextView
            android:id="@ id/textView_name_p2"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="21dp"
            android:layout_marginTop="63dp"
            android:text="TextView"
            android:textSize="30sp"
            tools:layout_editor_absoluteX="25dp"
            tools:layout_editor_absoluteY="66dp" />
    
        <TextView
            android:id="@ id/textView_fname_p2"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="268dp"
            android:layout_marginTop="65dp"
            android:text="TextView"
            android:textSize="30sp"
            tools:layout_editor_absoluteX="276dp"
            tools:layout_editor_absoluteY="66dp" />
    
        <TextView
            android:id="@ id/textView_name_p3"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="20dp"
            android:layout_marginTop="112dp"
            android:text="TextView"
            android:textSize="30sp"
            tools:layout_editor_absoluteX="25dp"
            tools:layout_editor_absoluteY="116dp" />
    
        <TextView
            android:id="@ id/textView_fname_p3"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="268dp"
            android:layout_marginTop="113dp"
            android:text="TextView"
            android:textSize="30sp"
            tools:layout_editor_absoluteX="276dp"
            tools:layout_editor_absoluteY="116dp" />
    
        <Spinner
            android:id="@ id/spinner_p1"
            android:spinnerMode="dialog"
            android:entries="@array/value"
            android:layout_width="84dp"
            android:layout_height="41dp"
            android:layout_marginStart="7dp"
            android:layout_marginTop="16dp"
            android:layout_toEndOf="@ id/textView_fname_p1"
            android:backgroundTint="#000000"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <Spinner
            android:id="@ id/spinner_p2"
            android:layout_width="84dp"
            android:layout_height="41dp"
            android:layout_marginStart="7dp"
            android:layout_marginTop="64dp"
            android:layout_toEndOf="@ id/textView_fname_p2"
            android:backgroundTint="#000000"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </RelativeLayout>
    ```
    
    **values/order_value.xml**
    ```<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="value">
            <item>1</item>
            <item>2</item>
            <item>3</item>
        </string-array>
    </resources>
 

TeamAdapter.java

     
    public class TeamAdapter extends ArrayAdapter<Team> {
    
        // View lookup cache
        private static class ViewHolder {
            TextView name_p1;
            TextView name_p2;
            TextView name_p3;
            TextView fname_p1;
            TextView fname_p2;
            TextView fname_p3;
            TextView level;
            TextView id_team;
        }
    
        public TeamAdapter(Context context, ArrayList<Team> t) {
            super(context, R.layout.item_team, t);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // Get the data item for this position
            Team t = getItem(position);
            // Check if an existing view is being reused, otherwise inflate the view
            ViewHolder viewHolder; // view lookup cache stored in tag
            if (convertView == null) {
                // If there's no view to re-use, inflate a brand new view for row
                viewHolder = new ViewHolder();
                LayoutInflater inflater = LayoutInflater.from(getContext());
                convertView = inflater.inflate(R.layout.item_team, parent, false);
                viewHolder.name_p1 = (TextView) convertView.findViewById(R.id.textView_name_p1);
                viewHolder.name_p2 = (TextView) convertView.findViewById(R.id.textView_name_p2);
                viewHolder.name_p3 = (TextView) convertView.findViewById(R.id.textView_name_p3);
                viewHolder.fname_p1 = (TextView) convertView.findViewById(R.id.textView_fname_p1);
                viewHolder.fname_p2 = (TextView) convertView.findViewById(R.id.textView_fname_p2);
                viewHolder.fname_p3 = (TextView) convertView.findViewById(R.id.textView_fname_p3);
                viewHolder.level = (TextView) convertView.findViewById(R.id.textView_nb_lvl);
                viewHolder.id_team = (TextView) convertView.findViewById(R.id.textView_id_team);
                // Cache the viewHolder object inside the fresh view
                convertView.setTag(viewHolder);
            } else {
                // View is being recycled, retrieve the viewHolder object from tag
                viewHolder = (ViewHolder) convertView.getTag();
            }
            // Populate the data from the data object via the viewHolder object
            // into the template view.
            viewHolder.name_p1.setText(t.getParticipants().get(0).getName());
            viewHolder.name_p2.setText(t.getParticipants().get(1).getName());
            viewHolder.name_p3.setText(t.getParticipants().get(2).getName());
            viewHolder.fname_p1.setText(t.getParticipants().get(0).getFirstName());
            viewHolder.fname_p2.setText(t.getParticipants().get(1).getFirstName());
            viewHolder.fname_p3.setText(t.getParticipants().get(2).getFirstName());
            viewHolder.level.setText(String.valueOf(t.getLevel()));
            viewHolder.id_team.setText(String.valueOf(t.getId()));
            // Return the completed view to render on screen
            return convertView;
        }
    }
 

item_team.xml

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@ id/textView_name_p1"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="206dp"
            android:layout_marginTop="7dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_name_p2"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="206dp"
            android:layout_marginTop="52dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_name_p3"
            android:layout_width="237dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="206dp"
            android:layout_marginTop="97dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_fname_p1"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginStart="461dp"
            android:layout_marginTop="7dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_fname_p2"
            android:layout_width="251dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="461dp"
            android:layout_marginTop="52dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_fname_p3"
            android:layout_width="252dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="461dp"
            android:layout_marginTop="97dp"
            android:text="TextView"
            android:textSize="30sp" />
    
        <ImageView
            android:id="@ id/imageViewP1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="728dp"
            android:layout_marginTop="11dp"
            android:src="@drawable/pf" />
    
        <ImageView
            android:id="@ id/imageViewP2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="730dp"
            android:layout_marginTop="55dp"
            android:src="@drawable/ps" />
    
        <ImageView
            android:id="@ id/imageViewP3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="728dp"
            android:layout_marginTop="101dp"
            android:src="@drawable/pt" />
    
        <TextView
            android:id="@ id/textView_lvl_team"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="36dp"
            android:layout_marginTop="6dp"
            android:text="Niveau :"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_nb_lvl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="153dp"
            android:layout_marginTop="7dp"
            android:textSize="30sp" />
    
        <TextView
            android:id="@ id/textView_id_team"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="4dp"
            android:layout_marginTop="12dp"
            android:textSize="20sp" />
    
    </RelativeLayout>
 

Team.java

     public class Team {
       private ArrayList<Participant> _team;
       private int _level;
       private int _id;
       /*Builder*/
        public Team(int id,ArrayList<Participant>team, int lvl){
            this._team = team;
            this._level=lvl;
            this._id=id;
        }
        public Team(int id,Participant p1, Participant p2,Participant p3,int lvl){
            ArrayList<Participant> team = new ArrayList<Participant>();
            team .add(p1);
            team.add(p2);
            team.add(p3);
            this._team = team;
            this._level=lvl;
            this._id=id;
        }
        public Team(int id,Participant p1, Participant p2,Participant p3){
            ArrayList<Participant> team = new ArrayList<Participant>();
            team.add(p1);
            team.add(p2);
            team.add(p3);
            this._team = team;
            this._level=p1.getLevel() p2.getLevel() p3.getLevel();
            this._id=id;
        }
    
        /*Getter amp; Setter*/
        public void setParticipants(ArrayList<Participant> team){
            this._team=team;
        }
        public void setParticipants(Participant p1, Participant p2,Participant p3){
            ArrayList<Participant> team = new ArrayList<Participant>();
            team .add(p1);
            team.add(p2);
            team.add(p3);
            this._team = team;
        }
        public ArrayList<Participant> getParticipants(){
            return _team;
        }
    
        public void setLevel(int lvl){
            this._level=lvl;
        }
    
        public int getLevel(){
            return _level;
        }
    
        public void setId(int id){
            this._id=id;
        }
    
            public int getId(){
            return _id;
        }
    }
 

Комментарии:

1. Я протестировал ваш код, и все в порядке! Можете ли вы подробнее объяснить свою проблему?

2. Вы смотрели видео? Ошибки компиляции нет, но значение счетчика не выбирается при нажатии на него.

3. Хммм интересно… Благодаря вашему комментарию я скопировал свой код в белый проект и заменил его классическим listview, а не пользовательским listview, и теперь он работает… @mostafa3dmax

4. Я думаю, что ваша проблема связана с вашим макетом диалога. ваш TextView перекрывает блесны, и вы не можете видеть значения. измените ширину TextView на wrap_content или меньший размер текста и протестируйте снова. вы должны узнать больше о работе с макетами и виджетами позиционирования

5. Да, я знаю, что макеты еще не готовы (я работаю в планшетном формате, а не на телефоне, поэтому с моей стороны это не мешает тестировать счетчик) Я хотел решить свою проблему с макетами позже, потому что это менее важно, чем счетчик. Таким образом, проблема не связана с перекрытием, но я не могу сказать, в чем дело…