2016-12-14 144 views
0

我有一个按钮的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(); 

       } 
      } 
      ; 

     } 
    }); 

回答

1

设置的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

+0

我试着用单选按钮!但是我想使用ImageView! –

+0

与imageView必须通知适配器每次点击图像.. – pkgrover

2

尝试这样

  1. 在你的ListView的getView()方法全局int变量称为位置

  2. 检查位置

    if (position == selectedPosition) { 
    // change the button color or whatever 
    
          } else { 
           // keep things in the normal way 
           } 
    
  3. 在您的列表视图setOnItemClickListener更新该变量的位置;并做一个notifyDataSetChanged()拨打getView方法

完成!

+0

我更新我的代码!这是我的适配器类! –

+0

,我已经在主类lisview了! –

+0

无所谓你在哪里可以使用逻辑 –