错误:java.lang.ClassCastException: java.lang.String不能被强制转换为com



我有一个gridview与Imageview和Textview。我正在通过意图获取名称和图像Url。我想在textview中显示名称在imageview中加载url但我得到了错误"java.lang.ClassCastException: java.lang.String不能被强制转换为com.example.animeguide.AnimeListOne ">

我的片段
public class NotificationsFragment extends Fragment {
ArrayList<AnimeListOne> list = new ArrayList<AnimeListOne>();
GridView listv;
private NotificationsViewModel notificationsViewModel;
private FragmentNotificationsBinding binding;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
notificationsViewModel =
new ViewModelProvider(this).get(NotificationsViewModel.class);
binding = FragmentNotificationsBinding.inflate(inflater, container, false);
View root = binding.getRoot();

listv = root.findViewById(R.id.listv);
Intent intent = getActivity().getIntent();
String animename = intent.getStringExtra("nameanime");
Intent newintent = getActivity().getIntent();
String url = newintent.getStringExtra("url2");

list.add(new AnimeListOne(animename , url));

loadData2();
saveData2();
ListNewAdapter adapter = new ListNewAdapter(getContext(), R.layout.watch_list, list);
listv.setAdapter(adapter);
listv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
list.remove(position);
adapter.notifyDataSetChanged();
saveData2();
return true;
}
});

return  root; }
private void saveData2() {
SharedPreferences sp = getActivity().getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor ed = sp.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
ed.putString("anime list", json);
ed.apply();
}
private void loadData2() {
SharedPreferences sp = getActivity().getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sp.getString("anime list", null);
Type type = new TypeToken<ArrayList<String>>() {
}.getType();
list = gson.fromJson(json, type);
if (list == null) {
list = new ArrayList<AnimeListOne>();
}
}



@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
'''

My Adapter Class

public class ListNewAdapter extends ArrayAdapter<AnimeListOne> {
private Context mContext;
public ListNewAdapter(@NonNull @NotNull Context context, int resource, @NonNull @NotNull ArrayList<AnimeListOne> objects) {
super(context, resource, objects);
mContext = context;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String name = getItem(position).getName();
String url = getItem(position).getUrl();
AnimeListOne animeListOne = new AnimeListOne(name , url);
convertView = LayoutInflater.from(mContext).inflate(R.layout.watch_list,parent, false);
TextView tvname = (TextView)convertView.findViewById(R.id.anime_name);
ImageView tvurl = (ImageView)convertView.findViewById(R.id.list_photo);
tvname.setText(name);
Glide.with(mContext).load(url).into(tvurl);
return convertView;
}
}

"

AnimeListOne类

public class AnimeListOne {
private String name;
private String url;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public AnimeListOne(String name, String url) {
this.name = name;
this.url = url;
}
}

检查这一行:

Type type = new TypeToken<ArrayList<String>>() {}.getType();

试试这个:

Type type = new TypeToken<ArrayList<AnimeListOne>>() {}.getType();

相关内容

最新更新