다른 모든 때문에 행을 클릭하면 내가있는 ListView의 단일 행 내에서 (눈에 보이지 않는 텍스트 뷰 TextView를 만들고, 말) 뷰/UI를 업데이트하는 방법에 대해 궁금 해서요 행의 뷰도 영향을받습니다. 좋은 예가 Google Play 뮤직에서 노래를 재생하는 것이므로 이퀄라이저 애니메이션이 그에 따라 표시됩니다.ListView를 단일 행 내에서 뷰를 업데이트
@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