1

を使用しListViewてプレイリストを表示し、クリック可能なものを使用してImageView再生を停止/再開します。現在、カスタム アダプターを作成しています。問題: をクリックするImageViewと、LogCat 出力で確認できるように、クリック イベントが検出されても何も起こりません。何が間違っていますか?以下のアダプターコード

       public class AudioListAdapter extends ArrayAdapter<Playlist> {

Context context;
int layoutResourceId;
Playlist data[] = null;


public AudioListAdapter(Context context, int layoutResourceId,
        Playlist[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    PlaylistHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new PlaylistHolder();
        PlaylistHolder.imgBtnPlay = (ImageView) row
                .findViewById(R.id.imgListBtnPlay);
        holder.txtTitle = (TextView) row.findViewById(R.id.tvListItemSong);
        holder.txtArtist = (TextView) row
                .findViewById(R.id.tvListItemArtist);

        Playlist playlist = data[position];
        holder.txtTitle.setText(playlist.Title);
        holder.txtArtist.setText(playlist.Artist);
        PlaylistHolder.imgBtnPlay.setImageResource(playlist.btn);
        PlaylistHolder.imgBtnPlay
                .setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        PlaylistHolder.imgBtnPlay
                                .setBackgroundResource(R.drawable.list_button_pause);
                        Log.e("onClick", "image clicked"); //Click events are detected

                    }
                });

        row.setTag(holder);
    } else {
        holder = (PlaylistHolder) row.getTag();
    }

    return row;
}

static class PlaylistHolder {
    static ImageView imgBtnPlay;
    TextView txtTitle, txtArtist;
}

  }
4

2 に答える 2

0

adaptername.notifyDatasetchanged メソッドを使用してリストを更新できます。ただし、クリック イベントが発生したときにリストがクリックされたビューを認識できないため、残念ながらそれも機能しません。クリックされたアイテムの位置を提供するアイテムクリックリスナーを使用してみることができます

于 2013-02-26T18:02:54.250 に答える
0

Can't Explain thatsetImageRessource()の代わりに使用して問題を解決しましたが、現在は機能していますsetBackgroundResource()

于 2013-02-26T18:01:25.820 に答える