Как исправить: «Многократный щелчок в элементе списка, чтобы он менял цвет» - PullRequest
0 голосов
/ 17 мая 2019

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

Единственное, что я не могу решить, - при нажатии на второй элемент цвет фона первого элемента изменяется обратно.Я бы хотел, чтобы все элементы, выбранные нажатием, оставались измененными в цвете.

// Assigns the listView variable to the listView in the xml file.
    listView = findViewById(R.id.distortedListViewWorkout);

    // Instantiate the Custom Adapter (currently not being used)
    MyAdapter adapter = new MyAdapter(this, mTitle, images);

    // Instantiates the Adatper with a premade android simple layout and      the title array list.
    listView.setAdapter(adapter);

    //((new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, mTitle)));

    // Enables the user to select multiple items in the listview.
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    // sets an onItemClickListener for the listView
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        /**
         *
         * @param parent
         * @param view
         * @param position
         * @param id
         */
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


// variable which will capture the title of the item selected in the listView.
            distortionsString = "";

            int userInput = listView.getCount();
            SparseBooleanArray sparseBooleanArray =   listView.getCheckedItemPositions();
            for(int loop = 0; loop < userInput; loop++){
                if(sparseBooleanArray.get(loop)) {
                    distortionsString += listView.getItemAtPosition(loop).toString() + "\n";
                           view.setSelected(true);
                }
            }
        }});
}

/**
 * Custom Adapter class containing an icon and title.
 */
 class MyAdapter extends ArrayAdapter<String> {

        Context context;
        String rTitle[];
        int rImages[];

        MyAdapter (Context c, String title[], int images[]){
            super(c, R.layout.row, R.id.titleEtWorkout, title);
            this.context = c;
            this.rTitle = title;
            this.rImages = images;
        }
    /**
     *
     * @param position
     * @param convertView
     * @param parent
     * @return
     */
        @NonNull
        @Override
        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = layoutInflater.inflate(R.layout.row, parent, false);
            ImageView images = row.findViewById(R.id.iconsWorkout);
            TextView myTitle = row.findViewById(R.id.titleEtWorkout);

            images.setImageResource(rImages[position]);
            myTitle.setText(rTitle[position]);
            return row;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...