单击按钮时更改按钮在列表视图中的状态
我有一个按钮的list view
,其中每行都有播放按钮。如果我点击第一次播放按钮它改变暂停,但如果我按下第二行播放按钮,那么首先将保持暂停状态,但我希望如果任何按钮被按下,然后回到其播放satate按钮和点击之一改变暂停。请帮助单击按钮时更改按钮在列表视图中的状态
if (position == mPlayingPosition&&equals(subscription_type_user)) {
textview_duration_Current.post(mUpdateTime);
//pb.setVisibility(View.VISIBLE);
Log.d("helyaa", String.valueOf(position));
mProgressUpdater.mBarToUpdate = pb;
mHandler.postDelayed(mProgressUpdater, 100);
} else {
Log.d("helnaa", String.valueOf(position));
//pb.setVisibility(View.GONE);
pb.setProgress(0);
textview_duration_Current.setText("");
if (mProgressUpdater.mBarToUpdate == pb) {
//this progress would be updated, but this is the wrong position
mProgressUpdater.mBarToUpdate = null;
}
我的列表Click事件
mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View item,
int position, long id) {
Planet planet = listAdapter.getItem(position);
planet.toggleChecked();
PlanetViewHolder viewHolder = (PlanetViewHolder) item.getTag();
// viewHolder.getCheckBox().setChecked(planet.isChecked());
if (planet.isChecked()) {
Toast.makeText(Main_New.this, "Play", Toast.LENGTH_SHORT).show();
//start playing item at position
try {
mPlayer.reset();
mPlayer.setDataSource(String.valueOf(planet = listAdapter.getItem(position)));
mPlayer.prepare();
mPlayer.start();
//mPlayingPosition = position;
Log.d("OnlyPos", String.valueOf(position));
// Log.d("Postionof", String.valueOf(mPlayingPosition));
//Toast.makeText(this,"Position of"+mPlayingPosition,Toast.LENGTH_SHORT).show();
// Updating progress bar
//updateProgressBar();
//trigger list refresh, this will make progressbar start updating if visible
} catch (IOException e) {
// Log.e("unable to play: " + planetList.get(position));
e.printStackTrace();
}
}
;
}
});
设置的ListView父radioGroup中,并设置单选按钮与游戏的自定义绘制图像/暂停这样的: - drawable_state.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pause" android:state_checked="false" android:state_focused="true"/>
<item android:drawable="@drawable/pause" android:state_checked="false" android:state_focused="false"/>
<item android:drawable="@drawable/play" android:state_checked="true" android:state_focused="true"/>
<item android:drawable="@drawable/play" android:state_checked="true" android:state_focused="false"/>
</selector>
在radioButton标签中设置此风格属性
<style name="radionbutton"
parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:button">@drawable/drawable_state</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
这将解决您的problam
尝试这样
在你的ListView的
getView()
方法全局int变量称为位置-
检查位置
if (position == selectedPosition) { // change the button color or whatever } else { // keep things in the normal way }
在您的列表视图
setOnItemClickListener
更新该变量的位置;并做一个notifyDataSetChanged()
拨打getView
方法
完成!
我更新我的代码!这是我的适配器类! –
,我已经在主类lisview了! –
无所谓你在哪里可以使用逻辑 –
我试着用单选按钮!但是我想使用ImageView! –
与imageView必须通知适配器每次点击图像.. – pkgrover