在列表视图排机器人使用按钮视图、机器人、按钮、列表

2023-09-07 03:18:35 作者:带你飞@

在我的Andr​​oid应用程序中,我使用列表视图和ListView的每一行都会有TextView的和播放/暂停按钮。在这里,我在显示每个列表row.When用户点击播放按钮的音频文件,音频文件将启动并播放按钮的图标将改为暂停。如果我再次点击同一按钮,它会停止暂停的音频文件和图标按钮会玩了。

问题是,如果我访问第一排的播放按钮,我点击另一行的播放按钮,然后第一排的图标应该change.I不知道如何来实现这一功能。请帮我解决这个问题。

getView()customAdapter方式:

 公共查看getView(INT位置,查看convertView,父母的ViewGroup){        ViewHolder支架=无效;        RowItem_ringtone rowItem =的getItem(位置);        LayoutInflater mInflater =(LayoutInflater)上下文                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);        如果(convertView == NULL){            convertView = mInflater.inflate(R.layout.ringtone_row,NULL);            持有人=新ViewHolder();            holder.txtTitle =(TextView中)convertView                    .findViewById(R.id.ringtoneTitle);            holder.btnPlay =(的ImageButton)convertView                    .findViewById(R.id.btnPlay);            holder.btnSet =(的ImageButton)convertView.findViewById(R.id.btnSet);            convertView.setTag(保持器);        }其他            支架=(ViewHolder)convertView.getTag();        holder.txtTitle.setText(rowItem.getRingTitle());        holder.btnPlay.setTag(rowItem.getRingId());        holder.btnSet.setTag(rowItem.getRingId());        holder.btnPlay.setOnClickListener(新OnClickListener(){            @覆盖            公共无效的onClick(视图v){                // TODO自动生成方法存根                Toast.makeText(的getContext(),v.getTag()。的toString()                        Toast.LENGTH_LONG).show();                如果(CustomListViewAdapter_ringtone.mp!= NULL){                    如果(CustomListViewAdapter_ringtone.mp.isPlaying()){                        CustomListViewAdapter_ringtone.mp.stop();                        CustomListViewAdapter_ringtone.mp.release();                    }                }                熔点= MediaPlayer.create(的getContext(),                        的Integer.parseInt(v.getTag()的toString()));                mp.start();                v.setBackgroundResource(R.drawable.set_icon);                btnId =的Integer.parseInt(v.getTag()的toString());            }        });返回convertView;    } 

解决方案 图书管理机器人图

在列表视图项点击监听器要更改图标吗?所以你得到的id行也。所以,你可以存储在变量ID作为当前播放行或文件。而当你点击另一行只是检查,按照该该ID和更改图标。

使用这样

  yourlistview.setOnItemClickListener(新OnItemClickListener(){    @覆盖公共无效onItemClick(适配器视图<>为arg0,ARG1查看,INT位置,长ARG3){    Toast.makeText(SuggestionActivity.this,+位置,Toast.LENGTH_SHORT).show();}}); 

本示例code为我工作:

 查看= NULL; 私人OnItemClickListener onItemClickListener =新OnItemClickListener(){        @覆盖        公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,                长ARG3){            如果(查看!= NULL)            {                TextView的数=(TextView中)view.findViewById(R.id.downloadCount);                count.setText(007);            }            鉴于= ARG1;        }    }; 

In my android application, I am using Listviewand each row of listview will have textview and play/pause button. Here I am displaying audio file in each list row.When user click play button, audio file will start and the icon of play button will be changed to pause .If i click same button again, it will stop that audio file and icon of pause button will be to play.

The problem is that if i am accessing the play button of 1st row and i click on play button of another row, then icon of 1st row should change.I don't know how to achieve this functionality. Please help me to solve this problem.

getView() method of customAdapter :

  public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        RowItem_ringtone rowItem = getItem(position);

        LayoutInflater mInflater = (LayoutInflater) context
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.ringtone_row, null);
            holder = new ViewHolder();

            holder.txtTitle = (TextView) convertView
                    .findViewById(R.id.ringtoneTitle);
            holder.btnPlay = (ImageButton) convertView
                    .findViewById(R.id.btnPlay);
            holder.btnSet = (ImageButton) convertView.findViewById(R.id.btnSet);
            convertView.setTag(holder);
        } else
            holder = (ViewHolder) convertView.getTag();

        holder.txtTitle.setText(rowItem.getRingTitle());
        holder.btnPlay.setTag(rowItem.getRingId());
        holder.btnSet.setTag(rowItem.getRingId());

        holder.btnPlay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Toast.makeText(getContext(), v.getTag().toString(),
                        Toast.LENGTH_LONG).show();
                if (CustomListViewAdapter_ringtone.mp != null) {
                    if (CustomListViewAdapter_ringtone.mp.isPlaying()) {
                        CustomListViewAdapter_ringtone.mp.stop();
                        CustomListViewAdapter_ringtone.mp.release();
                    }
                }
                mp = MediaPlayer.create(getContext(),
                        Integer.parseInt(v.getTag().toString()));
                mp.start();
                v.setBackgroundResource(R.drawable.set_icon);
                btnId = Integer.parseInt(v.getTag().toString());
            }
        });
return convertView;
    }

解决方案

On List view item click listener you are changing icon right? so there you get id for row also . So you can store that id in variable as currently playing row or file. And when you click on another row just check that id and change icon according to that.

Use like this

yourlistview.setOnItemClickListener(new OnItemClickListener()
{
    @Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long         arg3)
{ 
    Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});

This sample code works for me:

View view = null;

 private OnItemClickListener onItemClickListener = new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            if(view != null)
            {
                TextView count = (TextView) view.findViewById(R.id.downloadCount);
                count.setText("007");
            }
            view = arg1;

        }
    };

 
精彩推荐