如何解决如何在回收视图中获取确切位置
我正在使用乐曲适配器,将我所有的按钮放在OnClickListener中。删除按钮可以使用,但是编辑按钮不起作用,因为它不知道歌曲的位置是需要编辑的
public class SongAdapter extends RecyclerView.Adapter<MyView> implements Filterable {
AlertDialog dialog;
EditText editText;
AlertDialog dialog2;
EditText editText2;
public SongAdapter(List<Song> songs)
{
this.songs = songs;
this.songsFiltered = songs;
}
public List <Song> songs;
public List <Song> songsFiltered;
Context context;
@NonNull
@Override
public MyView onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View songView = inflater.inflate(R.layout.item_song,parent,false);
MyView viewHolder = new MyView(songView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyView holder,final int position)
{
Song song = songsFiltered.get(position);
final TextView artist = holder.titleArtist;
//edit
artist.setText(song.getArtist());
final TextView title = holder.titleTxt;
//edit
title.setText(song.getTitle());
int imageId = AppUtil.getImageIdFromDrawable(context,song.getCoverArt());
dialog = new AlertDialog.Builder(context).create();
editText = new EditText(context);
dialog.setTitle("Edit the Title");
dialog.setView(editText);
dialog2 = new AlertDialog.Builder(context).create();
editText2 = new EditText(context);
dialog2.setTitle("Edit the Artist");
dialog2.setView(editText2);
holder.image.setImageResource(imageId);
holder.removeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
MainActivity.favList.remove(position);
Gson gson = new Gson();
String json = gson.toJson(MainActivity.favList);
SharedPreferences.Editor editor = MainActivity.sharedPreferences.edit();
editor.putString("list",json);
editor.apply();
notifyDataSetChanged();
}
});
问题出在这里。我不知道如何获得位置,以便我可以编辑确切的歌曲名称
holder.editT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editText.setText(title.getText());
dialog.show();
}
});
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"SAVE TEXT",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
title.setText(editText.getText());
}
});
holder.editA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for(int i = 0; i < songs.size(); i++)
{
editText2.setText(artist.getText());
dialog2.show();
}
}
});
dialog2.setButton(DialogInterface.BUTTON_POSITIVE,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
artist.setText(editText2.getText());
}
});
}
解决方法
尝试一下
在您的onBindViewHolder(...)
holder.editT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editText.setText(songsFiltered.get(position).getTitle());//here you will get current item which i assume is Song Object which have title as String
dialog.show();
}
});
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"SAVE TEXT",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
title.setText(editText.getText());
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。