如何获取选定复选框的值并将其放入android中的String []数组中

asgardwin7

我正在创建这个应用程序,它列出了我手机中的所有音乐,上面有复选框和按钮。如果我检查列表中的项目并单击按钮,它将压缩所选项目。我的问题是我需要获取所选项目的值(目录路径)并将其放入 String [] 数组中。我试图搜索这个,但我很困惑。我是这个 android 开发的新手。请帮我。

这是我到目前为止所做的。

音乐.java

public class Music extends AppCompatActivity {

Spinner spinneruse;
ListView listView;
SongAdapter songAdapter;
Button getChoice;
ArrayList<SongInfo> _songs = new ArrayList<SongInfo>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_music);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    listView = (ListView) findViewById(R.id.lv);
    getChoice = (Button) findViewById(R.id.btnMusic);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
    Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
    if (cursor != null) {
        if (cursor.moveToFirst()) {
            do {
                String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

                SongInfo s = new SongInfo(name, artist, url);
                _songs.add(s);

            } while (cursor.moveToNext());

        }

        cursor.close();
        songAdapter = new SongAdapter(Music.this, _songs);

    }
    listView.setAdapter(new SongAdapter(this, _songs));
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            songAdapter.setSelected(position);
        }
    });
    getChoice.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // declare an array for storing the files i.e the path
            // of your source files


            // first parameter is d files second parameter is zip
            // file name
            Compress c = new Compress(songs, "/storage/sdcard0/file.zip");   //first parameter is d files second parameter is zip file name
            c.zip();

        }

    });
}//oncreate

static class SongInfo {
    public String Songname;
    private String Artistname;
    private String SongUrl;
    private boolean isSelected;


    public SongInfo(String songname, String artistname, String songUrl) {
        Songname = songname;
        Artistname = artistname;
        SongUrl = songUrl;
        this.isSelected = isSelected;
    }

    public String getSongname() {
        return Songname;
    }

    public void setSongname(String songname) {

        Songname = songname;
    }

    public String getArtistname() {
        return Artistname;
    }

    public void setArtistname(String artistname) {
        Artistname = artistname;
    }

    public String getSongUrl() {
        return SongUrl;
    }

    public void setSongUrl(String songUrl) {

        SongUrl = songUrl;
    }


    public boolean isSelected() {

        return isSelected;
    }

    public void setSelected(boolean selected) {

        isSelected = selected;
    }
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class SongAdapter extends BaseAdapter {
    public ArrayList<SongInfo> _songs = new ArrayList<SongInfo>();
    private Context context;
    LayoutInflater inflater;

    public SongAdapter(Context _context, ArrayList<SongInfo> songs) {
        this.context = _context;
        this._songs = songs;
    }

    public int getCount() {
        return _songs.size();
    }

    public Object getItem(int position) {
        return _songs.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    private class ViewHolder {

        protected CheckBox checkBox;
        private TextView tvSongName;
        private TextView tvSongArtist;


    }

    public View getView(final int position, View convertView, ViewGroup parent) {


        ViewHolder viewHolder = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.row_songs, null, true);

            viewHolder = new ViewHolder();

            viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
            viewHolder.tvSongName = (TextView) convertView.findViewById(R.id.tvSongName);
            viewHolder.tvSongArtist = (TextView) convertView.findViewById(R.id.tvArtistName);
            viewHolder.checkBox.setOnCheckedChangeListener(null);


            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }


        viewHolder.tvSongName.setText(_songs.get(position).getSongname());
        viewHolder.tvSongArtist.setText(_songs.get(position).getArtistname());

        viewHolder.checkBox.setOnCheckedChangeListener(null);
        viewHolder.checkBox.setChecked(_songs.get(position).isSelected());

        viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                int getPosition = (Integer) buttonView.getTag();  // Here we get the position that we have set for the checkbox using setTag.

                if (_songs.get(getPosition).isSelected()) {
                    _songs.get(getPosition).setSelected(false);

                } else {
                    _songs.get(getPosition).setSelected(true);
                    Toast.makeText(context.getApplicationContext(), "position " + position + " " + _songs.get(position).getSongUrl(),
                            Toast.LENGTH_LONG).show();
                    Log.e("URL", _songs.get(position).getSongUrl() + " ");
                }


            }


        });
        convertView.setTag(R.id.tvSongName, viewHolder.tvSongName);
        convertView.setTag(R.id.tvArtistName, viewHolder.tvSongArtist);
        convertView.setTag(R.id.checkBox, viewHolder.checkBox);

        viewHolder.checkBox.setTag(position); // This line is important.


        return convertView;
    }

    public ArrayList<SongInfo> getAllData() {
        return _songs;
    }

    public void setSelected(int position) {
        //Update status of checkbox
        SongInfo items = _songs.get(position);
        items.setSelected(!items.isSelected());
        notifyDataSetChanged();
    }

}
}

先感谢您!对此,我真的非常感激。

骑士移动
@Override
public void onClick(View v) {
// declare an array for storing the files i.e the path
// of your source files

// step 1: put all the selected songs into a ArrayList (songsSelected)
ArrayList<SongInfo> songsSelected = new ArrayList<>();
for(SongInfo songInfo : songAdapter._songs) {
    if (songInfo.isSelected()) {
        songsSelected.add(songInfo);
    }
}

// step 2: new a string array, save the Uri info into the array
String filesSelected[] = new String[songsSelected.size()];
for (int i=0; i<songsSelected.size(); i++) {
    filesSelected[i] = songsSelected.get(i).getSongUrl();
}

// first parameter is d files second parameter is zip
// file name
Compress c = new Compress(songs, "/storage/sdcard0/file.zip");   //first parameter is d files second parameter is zip file name
c.zip();

}

我在代码中评论了step1和step2。
filesSelected是歌曲文件选择列表。
希望能帮到你

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取PHP中所有选中复选框的值并将其放入数组中

来自分类Dev

获取PHP中所有选中复选框的值并将其放入数组中

来自分类Dev

如何在jquery中获取选定复选框的值并将其分配给json数组?

来自分类Dev

如何获取复选框值并将其存储到Android中的字符串数组中

来自分类Dev

如何从xml文件中获取复选框ID并将其显示到android中的页面?

来自分类Dev

如何使用Struts 2添加复选框值临时存储并将其放入会话obj中

来自分类Dev

如何获取在Android中以编程方式创建的选定复选框的值

来自分类Dev

获取表单复选框的多个值并将其放在JavaScript中的单独变量中。

来自分类Dev

在MVC / Razor中,如何获取多个复选框的值并将其全部传递给控制器?

来自分类Dev

获取一组选中复选框的值到JavaScript数组中,并将其传递给ajax请求

来自分类Dev

如何获取选中和未选中复选框数组的所有值并将其保存到PHP中的数据库

来自分类Dev

捕获选定的复选框,并将其转到php中的变量中

来自分类Dev

如何获取PHP中多个选定的(动态)复选框的值?

来自分类Dev

如何使用GridView asp.net中的复选框获取选定的行值?

来自分类Dev

如何在MVC中获取动态复选框的选定值?

来自分类Dev

如何使用GridView asp.net中的复选框获取选定的行值?

来自分类Dev

如何获取PHP中多个选定的(动态)复选框的值?

来自分类Dev

如何使用jQuery中的类获取选定单选按钮和复选框的值?

来自分类Dev

如何从单选按钮列表和复选框列表中获取选定的值?

来自分类Dev

如何从Laravel 5.2的某些复选框中获取选定的复选框ID

来自分类Dev

如何从excel列中获取所有值并将其放入python中的数组中?

来自分类Dev

在表单提交的数组中获取选中的复选框值

来自分类Dev

使用jQuery获取数组中复选框的值

来自分类Dev

如何获取列中的值并将其放入数组中?Google表格

来自分类Dev

如何从javascript中的表中获取复选框值?

来自分类Dev

Django中数组的复选框值

来自分类Dev

如何获取从 Laravel 控制器中的复选框输入获取的数组值?

来自分类Dev

如何在Struts2和JSP中的Action类中仅获取选定复选框的值

来自分类Dev

如何使用JQuery从Laravel 5.2中的某些复选框中获取选定的复选框ID

Related 相关文章

  1. 1

    获取PHP中所有选中复选框的值并将其放入数组中

  2. 2

    获取PHP中所有选中复选框的值并将其放入数组中

  3. 3

    如何在jquery中获取选定复选框的值并将其分配给json数组?

  4. 4

    如何获取复选框值并将其存储到Android中的字符串数组中

  5. 5

    如何从xml文件中获取复选框ID并将其显示到android中的页面?

  6. 6

    如何使用Struts 2添加复选框值临时存储并将其放入会话obj中

  7. 7

    如何获取在Android中以编程方式创建的选定复选框的值

  8. 8

    获取表单复选框的多个值并将其放在JavaScript中的单独变量中。

  9. 9

    在MVC / Razor中,如何获取多个复选框的值并将其全部传递给控制器?

  10. 10

    获取一组选中复选框的值到JavaScript数组中,并将其传递给ajax请求

  11. 11

    如何获取选中和未选中复选框数组的所有值并将其保存到PHP中的数据库

  12. 12

    捕获选定的复选框,并将其转到php中的变量中

  13. 13

    如何获取PHP中多个选定的(动态)复选框的值?

  14. 14

    如何使用GridView asp.net中的复选框获取选定的行值?

  15. 15

    如何在MVC中获取动态复选框的选定值?

  16. 16

    如何使用GridView asp.net中的复选框获取选定的行值?

  17. 17

    如何获取PHP中多个选定的(动态)复选框的值?

  18. 18

    如何使用jQuery中的类获取选定单选按钮和复选框的值?

  19. 19

    如何从单选按钮列表和复选框列表中获取选定的值?

  20. 20

    如何从Laravel 5.2的某些复选框中获取选定的复选框ID

  21. 21

    如何从excel列中获取所有值并将其放入python中的数组中?

  22. 22

    在表单提交的数组中获取选中的复选框值

  23. 23

    使用jQuery获取数组中复选框的值

  24. 24

    如何获取列中的值并将其放入数组中?Google表格

  25. 25

    如何从javascript中的表中获取复选框值?

  26. 26

    Django中数组的复选框值

  27. 27

    如何获取从 Laravel 控制器中的复选框输入获取的数组值?

  28. 28

    如何在Struts2和JSP中的Action类中仅获取选定复选框的值

  29. 29

    如何使用JQuery从Laravel 5.2中的某些复选框中获取选定的复选框ID

热门标签

归档