Java 我的代码导致我的应用程序在单击“时崩溃”;“找朋友”;在我的聊天应用程序菜单上,
此代码导致错误。我猜当适配器开始监听该点时Java 我的代码导致我的应用程序在单击“时崩溃”;“找朋友”;在我的聊天应用程序菜单上,,java,android,android-recyclerview,Java,Android,Android Recyclerview,此代码导致错误。我猜当适配器开始监听该点时 package com.example.wherechat; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import an
package com.example.wherechat;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
//import com.google.firebase.database.Query;
import com.google.firebase.database.Query;
import com.squareup.picasso.Picasso;
import de.hdodenhof.circleimageview.CircleImageView;
public class FindFriendsActivity extends AppCompatActivity
{
private Toolbar mToolBar;
private RecyclerView FindFriendRecyclerList;
private DatabaseReference UsersRef;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_friends);
UsersRef= FirebaseDatabase.getInstance().getReference().child("Users");
FindFriendRecyclerList=(RecyclerView)findViewById(R.id.find_friends_recycler_list);
FindFriendRecyclerList.setLayoutManager(new LinearLayoutManager(this));
mToolBar=(Toolbar)findViewById(R.id.find_friends_toolbar);
setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Find Friends");
}
@Override
protected void onStart()
{
super.onStart();
Query query = FirebaseDatabase
.getInstance()
.getReference().child("Users");
FirebaseRecyclerOptions<contacts> options= new FirebaseRecyclerOptions.Builder<contacts>().
setQuery(UsersRef,contacts.class)
.build();
FirebaseRecyclerAdapter<contacts,FindFriendsViewHolder>adapter=
new FirebaseRecyclerAdapter<contacts,FindFriendsViewHolder>(options){
@Override
protected void onBindViewHolder(@NonNull FindFriendsViewHolder findFriendsViewHolder, int i, @NonNull contacts contacts)
{
findFriendsViewHolder.userName.setText((contacts.getName()));
findFriendsViewHolder.userStatus.setText(contacts.getStatus());
Picasso.get().load(contacts.getImage()).placeholder(R.drawable.profile_image).into(findFriendsViewHolder.profileImage);
}
@ NonNull
@Override
public FindFriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.users_display_layout,parent,false);
FindFriendsViewHolder viewHolder=new FindFriendsViewHolder(view);
return viewHolder;
}
};
FindFriendRecyclerList.setAdapter(adapter);
adapter.startListening();
}
public static class FindFriendsViewHolder extends RecyclerView.ViewHolder
{
TextView userName,userStatus;
CircleImageView profileImage;
public FindFriendsViewHolder(@NonNull View itemView)
{
super(itemView);
userName=itemView.findViewById(R.id.user_profile_name);
userStatus=itemView.findViewById(R.id.user_online_status);
profileImage=itemView.findViewById(R.id.users_profile_image);
}
}
}
我的应用程序界面:
https://i.stack.imgur.com/J7X9T.png
这是我的XML文件。即使我的用户名和用户状态为TextView,它也显示了转换错误
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/users_profile_image"
android:layout_width="85dp"
android:layout_height="85dp"
android:src="@drawable/profile_image"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation= "horizontal">
<TextView
android:id="@+id/user_profile_name"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="user name"
android:textAlignment="textStart"
android:textSize="18sp"
android:textStyle="bold"
/>
<ImageView
android:id="@+id/user_online_status"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginTop="5dp"
android:src="@drawable/online"
android:visibility="invisible"/>
</LinearLayout>
<TextView
android:id="@+id/user_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="user status"
android:textAlignment="textStart"
android:textSize="16sp"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
在xml上,将用户名或用户状态定义为图像视图,将代码定义为文本视图。主要原因如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/users_profile_image"
android:layout_width="85dp"
android:layout_height="85dp"
android:src="@drawable/profile_image"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation= "horizontal">
<TextView
android:id="@+id/user_profile_name"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="user name"
android:textAlignment="textStart"
android:textSize="18sp"
android:textStyle="bold"
/>
<ImageView
android:id="@+id/user_online_status"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginTop="5dp"
android:src="@drawable/online"
android:visibility="invisible"/>
</LinearLayout>
<TextView
android:id="@+id/user_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="user status"
android:textAlignment="textStart"
android:textSize="16sp"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
java.lang.ClassCastException:
无法将androidx.appcompat.widget.AppCompatImageView强制转换为
android.widget.TextView
这意味着您正在将ImageView
转换为TextView
。那么问题是什么:xml中的问题。问题是userName
和userStatus
的id被交换。检查您的xml
更新的答案
看,你弄错了。在xml中,您在
ImageView
中使用user\u online\u statusid,但在FindFriendsViewHolder
中,您使用的是userStatus=itemView.findViewById(R.id.user\u online\u status)编码>并查看您声明的userStatus为textView,但它将是imageView看起来您弄错了。在xml中,您使用的是ImageView
中的user\u online\u status id,但在FindFriendsViewHolder
中,您使用的是userStatus=itemView.findViewById(R.id.user\u online\u status)
并看到您将userStatus声明为textView,但它将是ImageView非常感谢。可能只是输入错误。您在findViewById
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/users_profile_image"
android:layout_width="85dp"
android:layout_height="85dp"
android:src="@drawable/profile_image"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation= "horizontal">
<TextView
android:id="@+id/user_profile_name"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="user name"
android:textAlignment="textStart"
android:textSize="18sp"
android:textStyle="bold"
/>
<ImageView
android:id="@+id/user_online_status"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginTop="5dp"
android:src="@drawable/online"
android:visibility="invisible"/>
</LinearLayout>
<TextView
android:id="@+id/user_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="user status"
android:textAlignment="textStart"
android:textSize="16sp"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>