gpt4 book ai didi

java - 单击时将数据 RecyclerView 数据传递到另一个 Activity

转载 作者:行者123 更新时间:2023-12-01 11:24:40 24 4
gpt4 key购买 nike

我目前正在将信息从我的回收器 View 传递到另一个名为“partyInformation”的 Activity (与单击的单元格相关)。我的 recyclerView 中的信息是从 parse.com 获取的。我的 recyclerview 由 TextView 和 ImageView 组成,我想用这些数据填充我的“partyInfomation”。当我编译并运行时,我没有收到任何错误,但是当从我的回收器 View 中单击一个单元格时,我的应用程序退出并显示“不幸的是,应用程序已停止”。 logcat提示错误:java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView无法转换为android.os.Parcelable。

您能否检查我的代码并帮助确定我在尝试通过点击传递数据的过程中出错的地方?

主要 Activity

package com.example.jbobo_000.prac;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;


import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.Parse;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseQuery;

import java.util.ArrayList;
import java.util.List;

public class HomeScreen extends AppCompatActivity {
private RecyclerView mRecyclerDrawer;
private customAdapter mAdapter;
private Context context;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
setupDrawer();
context=this;
final List<Information> data = new ArrayList<>();
Parse.initialize(this, "xxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxx");
final ParseQuery<ParseObject> query = ParseQuery.getQuery("flyerDataFetch");
query.orderByDescending("createdAt");

query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> results, com.parse.ParseException e) {
for (ParseObject a : results) {
List<ParseObject> dataHolder = null;
try {
dataHolder = query.find();

if (e == null) {
Information information = new Information();
information.partyName = a.getString("partyName");
information.partyPromoterName = a.getString("partyPromoterName");
information.partyCost = a.getString("partyCost");

ParseFile bum1 = (ParseFile) a.get("partyFlyerImage");
ParseFile bum2 = (ParseFile) a.get("partyPromoterImage");
byte[] file1 = bum1.getData();
byte[] file2 = bum2.getData();
information.flyerPic = BitmapFactory.decodeByteArray(file1, 0, file1.length);
information.partyPromoterPic = BitmapFactory.decodeByteArray(file2,0,file2.length);

data.add(information);
}
else {
// something went wrong
}
} catch (ParseException e1) {
e1.printStackTrace();
}}
mRecyclerDrawer = (RecyclerView) findViewById(R.id.drawerList);
mRecyclerDrawer.setLayoutManager(new LinearLayoutManager(context));
mAdapter = new customAdapter(context, data);
mRecyclerDrawer.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}

});
}

private void setupDrawer() {
Toolbar mToolbar;
NavigationDrawer mDrawerFragment;
mToolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//setup the NavigationDrawer

mDrawerFragment = (NavigationDrawer)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
mDrawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}

自定义适配器

package com.example.jbobo_000.prac;



import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Parcelable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.parse.ParseImageView;

import java.util.Collections;
import java.util.List;

public class customAdapter extends RecyclerView.Adapter<customAdapter.MyViewHolder> {
List<Information> data = Collections.emptyList();
private LayoutInflater inflater;
private Context context;
public customAdapter (Context context,List<Information>data){
this.context=context;
inflater=LayoutInflater.from(context);
this.data= data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view= inflater.inflate(R.layout.custom_row, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder,int position){
Information current= data.get(position);
holder.promoterNameText.setText(current.partyPromoterName);
holder.costText.setText(current.partyCost);
holder.partyNameText.setText(current.partyName);
holder.flyerImage.setImageBitmap(current.flyerPic);
holder.promoterImage.setImageBitmap(current.partyPromoterPic);
}

@Override
public int getItemCount(){

return data.size();
}


class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView promoterNameText;
TextView costText;
TextView partyNameText;
ImageView flyerImage;
ImageView promoterImage;

public MyViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
promoterImage = (ImageView) itemView.findViewById(R.id.promoterPicImage);
flyerImage = (ImageView) itemView.findViewById(R.id.flyertImage);
costText = (TextView) itemView.findViewById(R.id.costText);
promoterNameText = (TextView) itemView.findViewById(R.id.promoterNameText);
partyNameText = (TextView) itemView.findViewById(R.id.partyNameText);
}

@Override
public void onClick(View v) {
//context.startActivity(new Intent(context, partyInformation.class));
int postion = getAdapterPosition();
Intent i = new Intent(context, partyInformation.class);
i.putExtra("partyName", (Parcelable) partyNameText);
i.putExtra("promoterNameText", (android.os.Parcelable) promoterNameText);
i.putExtra("costText", (android.os.Parcelable) costText);
i.putExtra("flyerImage", (android.os.Parcelable) flyerImage);
i.putExtra("promoterImage", (android.os.Parcelable) promoterImage);
context.startActivity(i);

}
}
}

派对信息

package com.example.jbobo_000.prac;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


public class partyInformation extends ActionBarActivity implements View.OnClickListener{
Button checkout;
TextView partyName1;
ImageView informationFlyer1;
ImageView promoterPic1;

String partyName= getIntent().getStringExtra("partyName");
String promoterNameText= getIntent().getStringExtra("promoterNameText");
String costText= getIntent().getStringExtra("costText");
String flyerImage= getIntent().getStringExtra("flyerImage");
String promoterImage= getIntent().getStringExtra("promoterImage");


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_party_information);
partyName1 = (TextView) findViewById(R.id.textView2);
informationFlyer1 = (ImageView) findViewById(R.id.informationFlyer);
promoterPic1 = (ImageView) findViewById(R.id.imageView);


partyName1.setText(partyName);
//informationFlyer1.setImageResource(flyerImage);
//promoterPic1.setImageResource(promoterImage);




checkout = (Button) findViewById(R.id.requestTicketBtn);
checkout.setOnClickListener(this);

}

@Override
public void onClick(View v){
switch(v.getId()){
case R.id.requestTicketBtn:
startActivity(new Intent(this, Checkout.class));}}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_party_information, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

LogCat

06-18 17:27:28.505  28047-28047/? I/art﹕ Late-enabling -Xcheck:jni
06-18 17:27:28.785 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Crash reporting is enabled for com.example.jbobo_000.prac, initializing...
06-18 17:27:28.797 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Looking for error files in /data/data/com.example.jbobo_000.prac/files/com.parse/cr/reports
06-18 17:27:28.797 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Looking for error files in /data/data/com.example.jbobo_000.prac/files/com.parse/cr/minidumps
06-18 17:27:29.051 28047-28075/com.example.jbobo_000.prac D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
06-18 17:27:29.057 28047-28047/com.example.jbobo_000.prac D/﹕ HostConnection::get() New Host Connection established 0xb42ccb80, tid 28047
06-18 17:27:29.068 28047-28047/com.example.jbobo_000.prac D/Atlas﹕ Validating map...
06-18 17:27:29.125 28047-28075/com.example.jbobo_000.prac D/libEGL﹕ loaded /system/lib/egl/libEGL_emulation.so
06-18 17:27:29.127 28047-28075/com.example.jbobo_000.prac D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_emulation.so
06-18 17:27:29.149 28047-28075/com.example.jbobo_000.prac D/libEGL﹕ loaded /system/lib/egl/libGLESv2_emulation.so
06-18 17:27:29.176 28047-28075/com.example.jbobo_000.prac D/﹕ HostConnection::get() New Host Connection established 0xaf0395c0, tid 28075
06-18 17:27:29.202 28047-28075/com.example.jbobo_000.prac I/OpenGLRenderer﹕ Initialized EGL, version 1.4
06-18 17:27:29.316 28047-28075/com.example.jbobo_000.prac D/OpenGLRenderer﹕ Enabling debug mode 0
06-18 17:27:29.354 28047-28075/com.example.jbobo_000.prac W/EGL_emulation﹕ eglSurfaceAttrib not implemented
06-18 17:27:29.354 28047-28075/com.example.jbobo_000.prac W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xaf035b20, error=EGL_SUCCESS
06-18 17:27:30.025 28047-28047/com.example.jbobo_000.prac I/Choreographer﹕ Skipped 37 frames! The application may be doing too much work on its main thread.
06-18 17:27:46.016 28047-28047/com.example.jbobo_000.prac I/ViewUtils﹕ app:theme is now deprecated. Please move to using android:theme instead.
06-18 17:27:46.371 28047-28075/com.example.jbobo_000.prac W/EGL_emulation﹕ eglSurfaceAttrib not implemented
06-18 17:27:46.371 28047-28075/com.example.jbobo_000.prac W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xb431d440, error=EGL_SUCCESS
06-18 17:27:46.409 28047-28047/com.example.jbobo_000.prac E/RecyclerView﹕ No adapter attached; skipping layout
06-18 17:27:46.700 28047-28047/com.example.jbobo_000.prac E/RecyclerView﹕ No adapter attached; skipping layout
06-18 17:27:47.697 28047-28056/com.example.jbobo_000.prac W/art﹕ Suspending all threads took: 12.419ms
06-18 17:27:49.209 28047-28047/com.example.jbobo_000.prac D/AndroidRuntime﹕ Shutting down VM
06-18 17:27:49.209 28047-28047/com.example.jbobo_000.prac E/CrashReporting﹕ ParseCrashReporting caught a ClassCastException exception for com.example.jbobo_000.prac. Building report.
06-18 17:27:49.210 28047-28047/com.example.jbobo_000.prac E/CrashReporting﹕ Handling exception for crash
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.os.Parcelable
at com.example.jbobo_000.prac.customAdapter$MyViewHolder.onClick(customAdapter.java:77)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
06-18 17:27:49.213 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Generating report file for crash
06-18 17:27:49.284 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Retrieving logcat output...
06-18 17:27:49.312 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Retrieving logcat output...
06-18 17:27:49.329 28047-28047/com.example.jbobo_000.prac D/CrashReporting﹕ Retrieving logcat output...
06-18 17:27:49.388 28047-28047/com.example.jbobo_000.prac W/Settings﹕ Setting stay_on_always has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
06-18 17:27:49.529 28047-28047/com.example.jbobo_000.prac V/CrashReporting﹕ About to start ReportSenderWorker from #handleException
06-18 17:27:49.538 28047-28251/com.example.jbobo_000.prac D/CrashReporting﹕ #checkAndSendReports - start
06-18 17:27:49.538 28047-28251/com.example.jbobo_000.prac D/CrashReporting﹕ Looking for error files in /data/data/com.example.jbobo_000.prac/files/com.parse/cr/reports
06-18 17:27:49.540 28047-28251/com.example.jbobo_000.prac D/CrashReporting﹕ Loading file 1434662869213-ClassCastException-1.stacktrace
06-18 17:27:49.547 28047-28251/com.example.jbobo_000.prac I/CrashReporting﹕ Sending file 1434662869213-ClassCastException-1.stacktrace
06-18 17:27:49.548 28047-28251/com.example.jbobo_000.prac D/CrashReporting﹕ Sending crash report to Parse...
06-18 17:27:49.556 28047-28251/com.example.jbobo_000.prac D/CrashReporting﹕ #checkAndSendReports - finish
06-18 17:27:49.631 28047-28047/com.example.jbobo_000.prac E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.jbobo_000.prac, PID: 28047
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.os.Parcelable
at com.example.jbobo_000.prac.customAdapter$MyViewHolder.onClick(customAdapter.java:77)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

最佳答案

更改此:

i.putExtra("partyName", (Parcelable) partyNameText);
i.putExtra("promoterNameText", (android.os.Parcelable) promoterNameText);
i.putExtra("costText", (android.os.Parcelable) costText)

对此:

i.putExtra("partyName", partyNameText.getText().toString());
i.putExtra("promoterNameText", promoterNameText.getText().toString()));
i.putExtra("costText", costText.getText().toString()))

这会将数据作为字符串添加到 Intent “i”。您无法从 TextView 转换为 Parcelable。

关于java - 单击时将数据 RecyclerView 数据传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30926381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com