我有一个带有图像的ListView,当单击该图像时,它将淡出,并在使用适配器的以下代码再次单击同一图像时恢复正常:
imageView.setTag(position);
if(currentWord.isFlag)
{
imageView.setAlpha(60);
}
else
{
imageView.setAlpha(255);
}
代码运行正常。当用户单击列表视图中的图像时,它将淡出
imageView.setAlpha(60);
当用户点击同一张图片时,它就会变成正常。
imageView.setAlpha(100);
我的wordadapter如下:
public class WordAdapter extends ArrayAdapter<Word> {
private int mColorResourceId;
public WordAdapter(Context context, ArrayList<Word> words, int colorResourceId) {
super(context, 0, words);
mColorResourceId = colorResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
final Word currentWord = getItem(position);
TextView miwokTextView = (TextView) listItemView.findViewById(R.id.miwok_text_view);
miwokTextView.setText(currentWord.getMiwokTranslationId());
TextView defaultTextView = (TextView) listItemView.findViewById(R.id.default_text_view);
defaultTextView.setText(currentWord.getDefaultTranslationId());
final ImageView imageView = (ImageView) listItemView.findViewById(R.id.image);
if (currentWord.hasImage()) {
imageView.setImageResource(currentWord.getImageResourceId());
imageView.setVisibility(View.VISIBLE);
} else {
imageView.setVisibility(View.GONE);
}
//添加标记以确定单击视图时视图的位置。
imageview.settag(位置);
View textContainer = listItemView.findViewById(R.id.text_container);
int color = ContextCompat.getColor(getContext(), mColorResourceId);
textContainer.setBackgroundColor(color);
imageView.setOnClickListener(new ImageView.OnClickListener() {
@Override
public void onClick(View view) {
if(currentWord.isFlag){
currentWord.isFlag = false;
}else{
currentWord.isFlag = true;
}
notifyDataSetChanged();
}
});
if(currentWord.isFlag)
{
imageView.setAlpha(60);
}
else
{
imageView.setAlpha(255);
}
return listItemView;
}
}
下面是我的片段类
public class FamilyFragment extends Fragment {
static boolean isActive = true;
private int lastSelectedPosition = -1;
private MediaPlayer mMediaPlayer;
private AudioManager mAudioManager;
private ArrayList<Word> words = new ArrayList<Word>();
WordAdapter adapter;
private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
mMediaPlayer.pause();
mMediaPlayer.seekTo(0);
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
mMediaPlayer.start();
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
releaseMediaPlayer();
}
}
};
private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if(lastSelectedPosition != -1){
Word lastWord = words.get(lastSelectedPosition);
lastWord.isPlaying = false;
lastSelectedPosition = -1;
adapter.notifyDataSetChanged();
}
releaseMediaPlayer();
}
};
public FamilyFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.word_list, container, false);
mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
words.add(new Word(R.string.family_father, R.string.miwok_family_father,
R.drawable.family_father,R.string.miwok_family_father, R.raw.family_father));
words.add(new Word(R.string.family_mother, R.string.miwok_family_mother,
R.drawable.family_mother,R.string.miwok_family_mother, R.raw.family_mother));
words.add(new Word(R.string.family_son, R.string.miwok_family_son,
R.drawable.family_son, R.string.miwok_family_son, R.raw.family_son));
words.add(new Word(R.string.family_daughter, R.string.miwok_family_daughter,
R.drawable.family_daughter,R.string.miwok_family_daughter, R.raw.family_daughter));
words.add(new Word(R.string.family_older_brother, R.string.miwok_family_older_brother,
R.drawable.family_older_brother, R.string.miwok_family_older_brother, R.raw.family_older_brother));
words.add(new Word(R.string.family_younger_brother, R.string.miwok_family_younger_brother,
R.drawable.family_younger_brother, R.string.miwok_family_younger_brother, R.raw.family_younger_brother));
words.add(new Word(R.string.family_older_sister, R.string.miwok_family_older_sister,
R.drawable.family_older_sister,R.string.miwok_family_older_sister, R.raw.family_older_sister));
words.add(new Word(R.string.family_younger_sister, R.string.miwok_family_younger_sister,
R.drawable.family_younger_sister, R.string.miwok_family_younger_sister, R.raw.family_younger_sister));
words.add(new Word(R.string.family_grandmother, R.string.miwok_family_grandmother,
R.drawable.family_grandmother, R.string.miwok_family_grandmother, R.raw.family_grand_mother));
words.add(new Word(R.string.family_grandfather, R.string.miwok_family_grandfather,
R.drawable.family_grandfather, R.string.miwok_family_grandfather, R.raw.family_grand_father));
adapter = new WordAdapter(getActivity(), words, R.color.category_family);
final ListView listView = (ListView) rootView.findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
releaseMediaPlayer();
Word word = words.get(position);
word.isPlaying = true;
if(lastSelectedPosition != -1){
Word lastWord = words.get(lastSelectedPosition);
lastWord.isPlaying = false;
}
lastSelectedPosition = position;
adapter.notifyDataSetChanged();
int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
mMediaPlayer.start();
word.isPlaying = true;
adapter.notifyDataSetChanged();
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
if (currentVolume ==0){
Toast.makeText(getContext(), "Please Turn the Volume Up ", Toast.LENGTH_SHORT).show();
}
mMediaPlayer.setOnCompletionListener(mCompletionListener);
}
}
});
return rootView;
}
@Override
public void onStart() {
super.onStart();
isActive = true;
}
@Override
public void onStop() {
super.onStop();
isActive = false;
releaseMediaPlayer();
}
private void releaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
}
}
}
现在我的问题是如果用户单击一个图像,它就会消失。
图像视图.setalpha(60);
当他点击列表视图中的另一个图像时,它也会消失,
图像视图.setalpha(60);
但是没有回头
以前单击的图像
(在列表视图中)恢复正常。
图像视图.setalpha(100);
如何得到期望的结果。