Я создаю действие, которое отображает записанные mp3-файлы на SD-карте в виде списка, есть ли встроенный метод для добавления значка переполнения (3 точки) в каждой строке списка для отображения меню.
Прикрепленный снимок экрана - это то, что я делал до сих пор.Спасибо
![enter image description here](https://i.stack.imgur.com/zKhiU.png)
Это код для отображения mp3-файлов в определенной папке, пожалуйста, если есть метод, покажите мне, что это и где я его использую.
class Mp3Filter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
}
public class MainActivity extends Activity {
private static final String SD_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Xylophone/";
//private static final String SD_PATH = "/sdcard/Xylophone/";
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
ListView list_view;
ArrayAdapter<String> adapter;
public ImageView overflow;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list_view = findViewById(R.id.listview1);
overflow = (ImageView) findViewById(R.id.overflow1);
//hide android logo from actionbar
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
//updatePlayList();
if (ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
fillList();
} else {
ActivityCompat.requestPermissions(this, new String[] {android.Manifest.permission.READ_EXTERNAL_STORAGE}, 100);
}
registerForContextMenu(list_view);
Button stopPlay = (Button) findViewById(R.id.stopBtn);
stopPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mp.stop();
}
});
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
try{
mp.reset();
mp.setDataSource(SD_PATH + songs.get(i));
mp.prepare();
mp.start();
}catch (IOException e){
Log.v(getString(R.string.app_name),e.getMessage() );
}
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
//to delete item
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
//now you have to get the ID of the context menu item
switch (item.getItemId())
{
case R.id.edit_option:
return true;
case R.id.share_option:
return true;
case R.id.delete_option:
//remove particular item from the SDCARD
String file_name = songs.get(info.position);
String MEDIA_PATH = new String(SD_PATH + file_name);
File file = new File(MEDIA_PATH);
file.delete();
//remove particular item from the list array
songs.remove(info.position);
//you need to refresh that particular adapter
adapter.notifyDataSetChanged();
return true;
//if the user does not do anything
default: return super.onContextItemSelected(item);
}
}
private void fillList() {
File file = new File(SD_PATH );
File list[] = file.listFiles();
for (int i = 0; i < list.length; i++) {
songs.add(list[i].getName());
}
//setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songs));
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, songs );
list_view.setAdapter(adapter);
}
//play audio on listview
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
fillList();
}
}
}
}
private void updatePlayList(){
File home = new File(SD_PATH);
if (home.listFiles(new Mp3Filter()).length > 0){
for(File file : home.listFiles(new Mp3Filter())){
songs.add(file.getName());
}
ArrayAdapter<String> songlist = new ArrayAdapter<String>(this,R.layout.song_item,songs );
//setListAdapter(songlist);
}
}
}