Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用listview删除BaseAdapter中的ConvertView运行时_Android_Listview_Baseadapter_Mediastore_Audio - Fatal编程技术网

Android 使用listview删除BaseAdapter中的ConvertView运行时

Android 使用listview删除BaseAdapter中的ConvertView运行时,android,listview,baseadapter,mediastore,audio,Android,Listview,Baseadapter,Mediastore,Audio,我正在使用BaseAdapter的getView()方法开发一个动态检索所有音频文件(带有相册艺术)的应用程序 现在我如何在触摸listView时删除项目。 (例如,如果我单击listView的第三项,则第三项应被删除或删除) 音乐\u光标代码: String[] proj = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME

我正在使用BaseAdapter的getView()方法开发一个动态检索所有音频文件(带有相册艺术)的应用程序

现在我如何在触摸listView时删除项目。 (例如,如果我单击listView的第三项,则第三项应被删除或删除)

音乐\u光标代码

String[] proj = { MediaStore.Audio.Media._ID,
        MediaStore.Audio.Media.DATA,
        MediaStore.Audio.Media.DISPLAY_NAME,
        MediaStore.Video.Media.SIZE, MediaStore.Audio.Media.ARTIST,
        MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.TITLE };

Cursor musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        proj, null, null, null);
int count = musiccursor.getCount();
适配器代码:

public class MusicAdapter extends BaseAdapter {
        private Context mContext;

        public MusicAdapter(Context con) {
            mContext = con;
        }
        public int getCount() {
            return count;
        }
        public Object getItem(int position) {
            return position;
        }
        public long getItemId(int position) {
            return position;
        }

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

            String id = null;
            ViewHolder holder;
            LayoutInflater inflater = getLayoutInflater();

            if (convertView == null) {

                convertView = inflater.inflate(R.layout.sub_layout, null);
                holder = new ViewHolder();

                holder.ID_ = (TextView) convertView.findViewById(R.id.txtSongName);
                holder.SIZE_ = (TextView) convertView.findViewById(R.id.txtSongSize);
                holder.ARTIST = (TextView) convertView.findViewById(R.id.txtSongArtist);
                holder.TITLE_image = (ImageView) convertView.findViewById(R.id.imgArtWork);

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

            // code for retrieving audio name and set to textView
            music_column_index = musiccursor
                    .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
            musiccursor.moveToPosition(position);
            id = musiccursor.getString(music_column_index);
            holder.ID_.setText(id);
            holder.ID_.setTextSize(15);

            // code for retrieving audioSize and set to textView
            music_column_index = musiccursor
                    .getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
            musiccursor.moveToPosition(position);
            id = (musiccursor.getString(music_column_index) + " (KB)");
            holder.SIZE_.setText(id);
            holder.SIZE_.setTextSize(15);

            // code for retrieving audio_Artist name and set to textView
            music_column_index = musiccursor
                    .getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
            musiccursor.moveToPosition(position);
            id = musiccursor.getString(music_column_index);
            holder.ARTIST.setText(id);
            holder.ARTIST.setTextSize(15);

            // code for retrieving album-art(from albumid) and set to ImageView

            musiccursor.moveToPosition(position);
            album_id_long = musiccursor.getLong(musiccursor
                    .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));

            Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
            Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id_long);
            ContentResolver res = MusicActivity.this.getContentResolver();
            InputStream in = null;
            try {
                in = res.openInputStream(uri);
            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            }
            Bitmap artwork = BitmapFactory.decodeStream(in);

            holder.TITLE_image.setImageBitmap(artwork);

            convertView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                    //on this code of onClick,a selected item should be deleted

                }
            });

            return convertView;
        }

        private class ViewHolder {
            TextView ID_;
            TextView SIZE_;
            TextView ARTIST;
            ImageView TITLE_image;
        }
    }

如果有其他方法可以做到这一点。 我们将非常感谢

谢谢。

您必须覆盖

public void onListItemClick(ListView l, View v, int position, long id)
单击视图时,将调用此回调。调用它时,您可以从数据库中删除条目,然后重新运行您创建的查询以填充
列表视图。如果您正在扩展
活动
而不是
列表活动
,则必须设置
OnItemClickListener

yourListView.setOnItemClickListener(
    new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view,
                int position, long id) {


             }
        }
 );
yourListView.setOnItemClickListener(
新的MClickListener()
{
@凌驾
public void onItemClick(AdapterView arg0,视图,
内部位置,长id){
}
}
);

您真的要删除音乐文件还是从列表视图中删除它? 顺便说一下,你只需要打电话 “音乐指挥者。移动位置(位置);”
一开始

我没有这样做@blackbeltonListItemClick不能覆盖类中的任何软件,我该怎么办。@blackbelt??你是在扩展Activity还是ListActivity?我编辑了我的答案。如果我可以建议你,当你管理游标和列表视图时,你应该使用游标适配器和游标加载。实际上,我需要这两种操作。但是,首先我必须先从列表视图中删除项。我还可以使用fix arrayAdapter删除,但现在文件来自getViw区域。我无法处理删除操作。