I have a gridview . in it i am set LinearLayout
in LinearLayout
two item ImageView
and TextView
.
I want to set selector on gridview's one item.
when i am set selector on gridview's item then it show item is selecteb but when i click on **Play Button
then gridview
item is deselected and selector was hidden.**
it's done when button image change . if i am not changing button image then selector is working. but i wants button .
all_song.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffddff"
android:orientation="vertical" >
<GridView
android:id="@+id/gvAllSong"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:choiceMode="singleChoice"
android:horizontalSpacing="10dp"
android:listSelector="@drawable/list_selector"
android:numColumns="3"
android:padding="5dp" >
</GridView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="9"
android:background="#ff6600"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/btnPlay"
style="?android:attr/buttonStyleSmall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:background="@null"
android:src="@drawable/btn_play" />
<SeekBar
android:id="@+id/songProgressBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_weight="5"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/seek_handler" />
<SeekBar
android:id="@+id/sbVolume"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>
</LinearLayout>
AllSongActivity.java
public class AllSongActivity extends Activity implements OnClickListener,
OnItemClickListener, OnCompletionListener {
private GridView gvAllSong;
public ImageButton btnPlay;
private SeekBar sbVolume;
private SeekBar songProgressBar;
private MediaPlayer mp;
private SongsManager plm;
private Utilities utils;
private AudioManager audioManager;
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
private ArrayList<com.prakash.musicdemo.baseadapter.RowItem> rowItems;
private com.prakash.musicdemo.baseadapter.CustomBaseAdapter baseadapter;
private boolean isRepeat = false;
private Handler mHandler = new Handler();
private int currentSongIndex = 0;
SharedPreferences preferences;
int index = 0;
private String TAG="SELECTED";
private int prevPos = -1;
private OpenDatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO onCreate Method
super.onCreate(savedInstanceState);
setContentView(R.layout.all_songs);
bindView();
init();
addlistner();
db = new OpenDatabaseHelper(AllSongActivity.this);
rowItems = new ArrayList<com.prakash.musicdemo.baseadapter.RowItem>();
this.songsList = plm.getPlayList();
for (int i = 0; i < songsList.size(); i++) {
final String Song_Paths = songsList.get(i).get("songPath");
final String Song_names = songsList.get(i).get("songTitle");
RowItem item = new RowItem(Song_names, Song_Paths, i % 10);
rowItems.add(item);
}
baseadapter = new com.prakash.musicdemo.baseadapter.CustomBaseAdapter(
this, rowItems);
gvAllSong.setAdapter(baseadapter);
;
}
private void isMusicPlay() {
if (mp.isPlaying()) {
songProgressBar.setEnabled(true);
} else {
songProgressBar.setEnabled(false);
}
}
public void init() {
// TODO init()
mp = new MediaPlayer();
plm = new SongsManager();
utils = new Utilities();
// Listeners
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
}
public void bindView() {
// TODO bindView()
gvAllSong = (GridView) findViewById(R.id.gvAllSong);
sbVolume = (SeekBar) findViewById(R.id.sbVolume);
btnPlay = (ImageButton) findViewById(R.id.btnPlay);
songProgressBar = (SeekBar) findViewById(R.id.songProgressBar);
}
public void addlistner() {
// TODO addlistner
gvAllSong.setOnItemClickListener(AllSongActivity.this);
btnPlay.setOnClickListener(AllSongActivity.this);
songProgressBar.setOnSeekBarChangeListener(this);
mp.setOnCompletionListener(this);
}
public void playSong(int songIndex) {
// TODO playSOng
// Play song
try {
mp.reset();
mp.setDataSource(songsList.get(songIndex).get("songPath"));
mp.prepare();
mp.start();
isMusicPlay();
btnPlay.setImageResource(R.drawable.btn_pause);
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onClick(View view) {
// TODO OnClick
switch (view.getId()) {
case R.id.btnPlay:
if (mp.isPlaying()) {
if (mp != null) {
mp.pause();
// Changing button image to play button
btnPlay.setImageResource(R.drawable.btn_play);
}
} else {
// Resume song
if (mp != null) {
mp.start();
// Changing button image to pause button
btnPlay.setImageResource(R.drawable.btn_pause);
}
}
break;
default:
break;
}
}
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO OnCompletion
// check for repeat is ON or OFF
if (isRepeat) {
// repeat is on play same song again
playSong(currentSongIndex);
} else {
// no repeat or shuffle ON - play next song
if (currentSongIndex < (songsList.size() - 1)) {
// playSong(currentSongIndex + 1);
// currentSongIndex = currentSongIndex + 1;
} else {
// play first song
playSong(0);
currentSongIndex = 0;
}
}
}
@SuppressLint("NewApi")
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
isRepeat = false;
view.setBackgroundResource(R.drawable.list_selector);
baseadapter.notifyDataSetChanged();
currentSongIndex = position;
playSong(currentSongIndex);
}
}