How to get Selected items from Multi Select List View

Это может на самом деле быть сделано довольно легко с чистыми собственными командами, просто необходимо знать, как использовать более хитрых из них. Нет смысла во внешних инструментах как VBScript или противных побочных эффектах как очистка экрана необходимо.

то, Что Вы ищете, является эквивалентом удара" echo -n" команда, которая производит строку без новой строки. В пакете XP это достигается при помощи" set /p" (попросите у пользователя ответа с подсказкой) с пустым входом следующим образом:

<nul (set /p junk=Hello)
echo. again.

произведет строку "Привет снова". без прошедшей новой строки.

, Что прием (и использование CTRL-H, символ возврата виден в следующем сценарии тестирования, который запускает (один за другим) 10-секундную подзадачу с 20 вторых тайм-аутов и 15-секундную подзадачу с 10 вторыми тайм-аутами.

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

Имеют в виду, что строки ^H в этом сценарии являются на самом деле символами CTRL-H, ^ | является двумя отдельными символами, используемыми для выхода из символа вертикальной черты.

@echo off

:: Localise environment.
setlocal enableextensions enabledelayedexpansion

:: Specify directories. Your current working directory is used
:: to create temporary files tmp_*.*
set wkdir=%~dp0%
set wkdir=%wkdir:~0,-1%

:: First pass, 10-second task with 20-second timeout.
del "%wkdir%\tmp_*.*" 2>nul
echo >>"%wkdir%\tmp_payload.cmd" ping 127.0.0.1 -n 11 ^>nul
echo >>"%wkdir%\tmp_payload.cmd" del "%wkdir%\tmp_payload.flg"
call :monitor "%wkdir%\tmp_payload.cmd" "%wkdir%\tmp_payload.flg" 20

:: Second pass, 15-second task with 10-second timeout.
del "%wkdir%\tmp_*.*" 2>nul:
echo >>"%wkdir%\tmp_payload.cmd" ping 127.0.0.1 -n 16 ^>nul
echo >>"%wkdir%\tmp_payload.cmd" del "%wkdir%\tmp_payload.flg"
call :monitor "%wkdir%\tmp_payload.cmd" "%wkdir%\tmp_payload.flg" 10

goto :final

:monitor
    :: Create flag file and start the payload minimized.
    echo >>%2 dummy
    start /min cmd.exe /c "%1"

    :: Start monitoring.
    ::    i is the indicator (0=|,1=/,2=-,3=\).
    ::    m is the number of seconds left before timeout.
    set i=0
    set m=%3
    <nul (set /p z=Waiting for child to finish: ^|)

    :: Loop here awaiting completion.
    :loop
        :: Wait one second.
        ping 127.0.0.1 -n 2 >nul

        :: Update counters and output progress indicator.
        set /a "i = i + 1"
        set /a "m = m - 1"
        if %i% equ 4 set i=0
        if %i% equ 0 <nul (set /p z=^H^|)
        if %i% equ 1 <nul (set /p z=^H/)
        if %i% equ 2 <nul (set /p z=^H-)
        if %i% equ 3 <nul (set /p z=^H\)

        :: End conditions, complete or timeout.
        if not exist %2 (
            echo.
            echo.   Complete.
            goto :final
        )
        if %m% leq 0 (
            echo.
            echo.   *** ERROR: Timed-out waiting for child.
            goto :final
        )
        goto :loop
:final
endlocal
47
задан Shereef Marzouk 4 December 2011 в 12:33
поделиться

2 ответа

Дело в том, что вы должны перебирать все элементы представления списка, но не проверенные позиции.

Определите переменные:

  • listView (экземпляр вашего ListView)
  • имен (ArrayList вы являетесь)
  • saveCheckedName (сохранить все проверенные имена в этом Arraylist)

     SparseBooleanArray checkedPositions = listView.getCheckedItemPositions();
        for (int i = 0; i < subjectListView.getCount(); i++) {
                        if (checkedPositions.get(i) == true) {
                            saveCheckedName.add(names.get(i));
                        }
                    }
    
3
ответ дан 26 November 2019 в 19:23
поделиться

Очень просто, используйте код ниже

listViewRequests.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    AppCompatCheckedTextView checkBox = (AppCompatCheckedTextView) view;

                    if (checkBox.isChecked() == true){
                        Log.i("CHECK",checkBox.isChecked()+""+checkBox.getText().toString());
                    }
                }
            });
1
ответ дан 26 November 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: