私は音楽プレーヤーappを開発しています。私のプロジェクトには、リストビューが1つあり、最近リストに表示されたリストビューが1つあります。最近再生された曲listview.Butに表示されている曲リストビューの曲から曲のリストビューから同じ曲を選択すると最近のリストビューにも表示され、カスタムリストビューアダプターを使用しています。リストビューは別のリストビューから値を選択すると繰り返し値を表示します
最近の曲リストでは、繰り返し選択されていない曲が1つだけ表示されます。
ここでは、この私の最近の曲リストScreenshote
anyoneknowどの場合、これは、そう
public class Playlists extends ListFragment {
EditText edtSearch;
SongAdapter songAdapter;
SongsManager songsManager = new SongsManager();
private static final int ALERT_DIALOG = 1;
// Songs list
public ArrayList<SongModel> songsList = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View windows = inflater.inflate(R.layout.playlist, container, false);
return windows;
}
@Override
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
getListView().setFastScrollEnabled(true);
//ListView animation
LayoutAnimationController controller
= AnimationUtils.loadLayoutAnimation(
getActivity(), R.anim.list_layout_controller);
getListView().setLayoutAnimation(controller);
edtSearch = (EditText)getView().findViewById(R.id.search);
final ArrayList<SongModel> songsListData = songsManager.songList;
Log.i("songsListData...",""+songsListData.size());
SongsManager plm = new SongsManager();
// get all songs from sdcard
this.songsList = plm.getPlayList();
// looping through playlist
for (int i = 0; i < songsListData.size(); i++) {
SongModel song = songsListData.get(i);
songsListData.add(song);
}
//Songlist custom array adapter
songAdapter = new SongAdapter(getActivity(),songsList);
setListAdapter(songAdapter);
// selecting single ListView item
ListView lv = getListView();
// listening to single listitem click
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View arg0,
int position, long id) {
Log.i("Index", "..." + position);
songAdapter.setSelectedIndex(position);
Intent i = new Intent(getActivity().getApplicationContext(),Main.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
SongModel songModel = (SongModel) songAdapter.getItem(position);
int indexOfSong = songAdapter.songsList.indexOf(songModel);
// Sending songIndex to PlayerActivity
i.putExtra("songIndex", indexOfSong);
getActivity().setResult(100,i);
startActivityForResult(i, 100);
Player.mp.stop();
Constant.status = 0;
//putting song in recentSongList arraylist
SongModel model = (SongModel) songAdapter.getItem(position);
model.setSongTitle(songModel.getSongTitle());
model.setSongPath(songModel.getSongPath());
Constant.recentSongList.add(model);
Log.i("recentSongList...", "..." + Constant.recentSongList.size());
getActivity().finish();
}
});
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
removeItemFromList(position);
return true;
}
private void removeItemFromList(int position) {
final int deletePosition = position;
Dialog dialog = null;
ContextThemeWrapper ctw = new ContextThemeWrapper(getActivity(), R.style.MyTheme);
CustomBuilder builder = new CustomBuilder(ctw);
builder.setTitle("Delete");
builder.setMessage("Do you want delete this song?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TOD O Auto-generated method stub
songsList.remove(deletePosition);
songAdapter.notifyDataSetChanged();
songAdapter.notifyDataSetInvalidated();
}
});
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
builder.show();
}
});
edtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String text = edtSearch.getText().toString().toLowerCase(Locale.getDefault());
songAdapter.filter(text);
}
});
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (this.isVisible()) {
// If we are becoming invisible, then...
Log.d("setUserVisibleHint()...", "PlayList...Visible");
if (!isVisibleToUser) {
Log.d("setUserVisibleHint()...", "PlayList...notVisible");
// TODO stop audio playback
}
}
}
}
と最近の曲リストフラグメント
public class RecentSongList extends ListFragment{
ResentSongListAdapter adapter;
public ArrayList<SongModel> recentSongList = Constant.recentSongList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View windows = inflater.inflate(R.layout.recent_playlist, container, false);
Log.i("recent Song List...", "..." + recentSongList.size());
return windows;
}
@Override
public void onViewCreated(View v, Bundle savedInstanceState) {
//ListView animation
LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(getActivity(), R.anim.list_layout_controller);
getListView().setLayoutAnimation(controller);
adapter = new ResentSongListAdapter(getActivity(), recentSongList);
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("Index", "..." + position);
Intent i = new Intent(getActivity().getApplicationContext(),Main.class);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
SongModel songModel = (SongModel) adapter.getItem(position);
int indexOfSong = recentSongList.indexOf(songModel);
// Sending songIndex to PlayerActivity
i.putExtra("songIndex", indexOfSong);
getActivity().setResult(100, i);
startActivityForResult(i, 100);
Player.mp.stop();
getActivity().finish();
Constant.status = 1;
}
});
}
}
フラグメント曲のリストです私はこれを教えてくれます。
あなたはこのためにデータベースを使用する場合は、最近の曲にフラグ値を保存考えると「プレーヤー」タブ内のすべての曲を表示し、フラグが立てられた値に応じてクエリを作成し、「最近」タブ内に表示します。 – vidulaJ
私はdatabase.iを使用していません。この値を1つのリストビューから別のリストビューに単純に渡しています。 –
次に2つのArrayListを保持しますか? – vidulaJ