1

チェックされたアイテムのリストを文字列配列で取得したい。私はリストビューとしてvideoListを取り、それでベースアダプターを実装し、baseadapterをオーバーライドし、チェックボックスでカスタマイズしました。
私はこれを試しましたが、nullpointerexception を与えています。

btnplay.setOnClickListener(new View.OnClickListener() 
    {
        SparseBooleanArray sparseBooleanArray = videolist.getCheckedItemPositions();

        @Override
        public void onClick(View v)
        {

            for(int i =0 ; i<videolist.getCount();i++)
            {

                if(sparseBooleanArray.get(i))
                {

                    String str = (String) videolist.getItemAtPosition(sparseBooleanArray.keyAt(i));
                    Toast.makeText(getBaseContext(),str , 3).show();
                }
            }


        }
    });


public class VideoAdapter extends BaseAdapter
{
    private Context vContext;
    public VideoAdapter(Context c) 
    {
        vContext = c;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return count;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

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

        System.gc();
        LayoutInflater inflater = (LayoutInflater) vContext.getSystemService(vContext.LAYOUT_INFLATER_SERVICE);
        View view;
        CheckBox cb;
                String id = null;
        if (convertView == null) 
        {
            view = new View(vContext);  

            view = inflater.inflate(R.layout.row, null);

            cb = (CheckBox) view.findViewById(R.id.checkBox1);


            video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID);

            videocursor.moveToPosition(position);


            video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);

            videocursor.moveToPosition(position);

            id = videocursor.getString(video_column_index);

            video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);

            videocursor.moveToPosition(position);

            id += " Size(KB):" + videocursor.getString(video_column_index);

            cb.setText(id);
        } else
              view = convertView;
        return view;
}
4

3 に答える 3

0

デフォルトでは、リストビューの選択モードは CHOICE_MODE_SINGLE に設定されているため、getCheckedItemPositoins() が null 以外の SparseBooleanArray を返すように、選択モードを単一または複数に設定する必要があります。

これが誰かを助けることを願っています!!

于 2013-02-09T15:18:55.997 に答える