如何从同一列表视图中的其他项目访问/更改列表视图项目中的视图?

时间:2020-04-02 21:34:14

标签: java android android-listview android-arrayadapter

我有一个小应用程序,它使用ListView,每个项目都有一个播放按钮,一个打开/关闭按钮以及一个ImageView,其可见性设置为View.GONE。当我按下打开/关闭按钮时,应将一个列表项中的ImageView设置为View.VISIBLE,更改打开/关闭按钮,并关闭其他显示{{1 }},并更改其打开/关闭按钮以反映关闭状态。这是我的自定义ImageView中的onClick

ArrayAdapter

如何从另一个列表项访问一个列表项中的boolean open = false; imgOpen_Close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!open){ openClose.setImageResource(R.drawable.open_arrow); mainImage.setVisibility(View.VISIBLE); open = true; }else{ openClose.setImageResource(R.drawable.close_arrow); mainImage.setVisibility(View.VISIBLE); open = false; } });

整个自定义ArrayAdapter。

View

MainActivity

package net.androidbootcamp.mypersonalplaylist;

import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyListAdapter extends ArrayAdapter<String> {

private final Activity context;
private final String[] songs;
private final Integer[] imgID;

MediaPlayer mpKickStart, mpGirlsGirls, mpHomeSweetHome;


public MyListAdapter(Activity context, String[] songs, Integer[] imgID){
    super(context, R.layout.list_view_custom, songs);
    this.context=context;
    this.songs=songs;
    this.imgID=imgID;
}

public View getView(final int position, View view, ViewGroup parent){
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.list_view_custom, null, true);

    TextView txtSongName = rowView.findViewById(R.id.txtSongName);
    final ImageView imgCoverArt = rowView.findViewById(R.id.imgCoverArt);
    final ImageView imgPlayButton = rowView.findViewById(R.id.imgPlayButton);
    final ImageView imgOpen_Close = rowView.findViewById(R.id.imgOpen_Close);

    txtSongName.setText(songs[position]);
    imgCoverArt.setImageResource(imgID[position]);

    mpKickStart = new MediaPlayer();
    mpKickStart = MediaPlayer.create(context, R.raw.kickstartmyheart);
    mpGirlsGirls = new MediaPlayer();
    mpGirlsGirls = MediaPlayer.create(context, R.raw.girlsgirlsgirls);
    mpHomeSweetHome = new MediaPlayer();
    mpHomeSweetHome = MediaPlayer.create(context, R.raw.homesweethome);

    imgPlayButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (position){
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                default:
                    break;
            }
        }
    });

    imgOpen_Close.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("POSITION", "Position Clicked: " + position);
        }

    });

    return rowView;
    }
}

0 个答案:

没有答案