当用户单击下一步按钮时加载reyclerview的下一项,其中有错误



我正在制作一个Android应用程序,其中每当用户单击Recyclerview项目时,我都有reyclerview,然后他正在导航到下一个活动,并且在下一个活动中将显示数据。它正在工作,但现在我在其中添加了下一个和上一个按钮。每当单击下一个按钮时,都应显示下一个recler项目的数据,并且与上一个按钮相同。

但我在这方面遇到了错误。这是我的代码。

回收器适配器:

public class ContentViewRecyclerAdapter extends RecyclerView.Adapter<ContentViewRecyclerAdapter.ViewHolder>{
ArrayList<ContentModel>contentModels;
Context context;
public ContentViewRecyclerAdapter(ArrayList<ContentModel> contentModels, Context context) {
this.contentModels = contentModels;
this.context = context;
}
@NonNull
@Override
public ContentViewRecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.content, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ContentViewRecyclerAdapter.ViewHolder holder, final int position) {
holder.textView.setText(contentModels.get(position).getContent());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, ContentViewActivity.class);
i.putExtra("valuecontent", contentModels.get(position).getContent());
i.putExtra("position", position);
i.putParcelableArrayListExtra("contentmodels", contentModels);
context.startActivity(i);
}
});
}
@Override
public int getItemCount() {
return contentModels.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.contentText);
}
}

}

模型类:

public class ContentModel implements Parcelable {
String content;
public ContentModel(String content) {
this.content = content;
}
protected ContentModel(Parcel in) {
content = in.readString();
}
public static final Creator<ContentModel> CREATOR = new Creator<ContentModel>() {
@Override
public ContentModel createFromParcel(Parcel in) {
return new ContentModel(in);
}
@Override
public ContentModel[] newArray(int size) {
return new ContentModel[size];
}
};
public String getContent() {
return content;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(content);
}

}

内容视图活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content_view);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView_content);
next = findViewById(R.id.next);
prev = findViewById(R.id.prev);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
textView = findViewById(R.id.textView);
imageView = findViewById(R.id.backbtncntent);
sharebtn = findViewById(R.id.sharebtn);
copybtn = findViewById(R.id.copy);
contentModels = new ArrayList<>();
contentModels.clear();
contentModels = getIntent().getParcelableArrayListExtra("contentmodels");
final String valuecontent = getIntent().getStringExtra("valuecontent");
position = getIntent().getIntExtra("position",0);
textView.setText((Integer) contentModels.get(position));
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ContentViewActivity.this, HomeActivity.class);
startActivity(i);
}
});
sharebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Hey Read Some Interesting Content");
intent.putExtra(android.content.Intent.EXTRA_TEXT, valuecontent);
startActivity(Intent.createChooser(intent, "Share Via"));
}
});
copybtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setClipboard(ContentViewActivity.this,textView.getText().toString());
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
position =(position+1)%contentModels.size();
textView.setText((Integer) contentModels.get(position));
}
});
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
position =(position-1)%contentModels.size();
textView.setText((Integer) contentModels.get(position));
}
});
}
private void setClipboard(Context context, String text) {
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
Toast.makeText(ContentViewActivity.this, "Copied to Clipboard", Toast.LENGTH_SHORT).show();
clipboard.setPrimaryClip(clip);
}
}

}

我得到的错误:

Caused by: java.lang.ClassCastException: example.example1.shayariapp.Models.ContentModel cannot be cast to java.lang.Integer
at example.example1.shayariapp.Acitivties.ContentViewActivity.onCreate(ContentViewActivity.java:54)
at android.app.Activity.performCreate(Activity.java:7227)
at android.app.Activity.performCreate(Activity.java:7218)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2941)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3066) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:202) 
at android.app.ActivityThread.main(ActivityThread.java:6962) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888) 

请帮我解决这个问题。请

它位于此处:

textView.setText((Integer) contentModels.get(position));

您正在尝试将ContentModel项目解析为Integer

你这样做了 3 次。onCreate()内部和内部ClickListeners用于nextprev

最新更新