他のすべてのので、行をクリックしたときに、私は、リストビューの単一の行内(目に見えないのTextViewを作り、例えば)ビュー/ UIを更新する方法を思っていました行のビューも同様に影響を受けます。 Google Playミュージックで曲を再生するなど、イコライザーのアニメーションが適切に表示されます。リストビューの単一の列内のビューを更新する
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // Renders only a ListView
ListView songListView = (ListView) findViewById(R.id.list);
List<Song> songList = new ArrayList<>();
for (int i = 1; i <= 200; i++) songList.add(new Song("Song" + i, "Artist" + i));
SongAdapter songAdapter = new SongAdapter(this, songList);
songListView.setAdapter(songAdapter);
songListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l) {
if (position == view.getId()) {
TextView titleText = (TextView) view.findViewById(R.id.song_title);
titleText.setVisibility(View.INVISIBLE);
}
}
});
}
...と私のArrayAdapterのGetViewメソッドとViewHolderクラス:
MainActivityののonCreate():ここに私のスニペットがある
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent,
false);
holder = new ViewHolder();
holder.song = (TextView) convertView.findViewById(R.id.song_title);
holder.artist = (TextView) convertView.findViewById(R.id.song_artist);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
convertView.setId(position);
Song currentSong = getItem(position);
if (currentSong != null) {
holder.song.setText(currentSong.getTitle());
holder.artist.setText(currentSong.getArtist());
}
return convertView;
}
private static class ViewHolder {
TextView song;
TextView artist;
}
ありがとうございますが、他のすべてのビューはまだ消えています。 – DaveNOTDavid