android回收视图崩溃
我正在努力学习。我正在看这个视频 我的adapter.java是:android回收视图崩溃,android,android-recyclerview,Android,Android Recyclerview,我正在努力学习。我正在看这个视频 我的adapter.java是: package com.example.rfr.listcards; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; impo
package com.example.rfr.listcards;
import android.content.Context;
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 java.util.List;
public class Adapter extends RecyclerView.Adapter<Adapter.myViewHolder> {
Context mContext;
List<item> mData;
public Adapter(Context mContext, List<item> mData) {
this.mContext = mContext;
this.mData = mData;
}
@Override
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View v = inflater.inflate(R.layout.card_item, parent, false);
return new myViewHolder(v);
}
@Override
public void onBindViewHolder(myViewHolder holder, int position) {
holder.background_img.setImageResource(mData.get(position).getBackground());
holder.profile_photo.setImageResource(mData.get(position).getProfilePhoto());
holder.tv_title.setText(mData.get(position).getProfileName());
holder.tv_nbFollowers.setText(mData.get(position).getNbFollowers());
}
@Override
public int getItemCount() {
return mData.size();
}
public class myViewHolder extends RecyclerView.ViewHolder {
ImageView profile_photo, background_img;
TextView tv_title, tv_nbFollowers;
public myViewHolder(View itemView) {
super(itemView);
profile_photo = itemView.findViewById(R.id.profile_img);
background_img = itemView.findViewById(R.id.card_background);
tv_title = itemView.findViewById(R.id.card_title);
tv_nbFollowers = itemView.findViewById(R.id.card_nb_follower);
}
}
}
package com.example.rfr.listcards;
导入android.content.Context;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入java.util.List;
公共类适配器扩展了RecyclerView.Adapter{
语境;
列出mData;
公共适配器(上下文mContext、列表mData){
this.mContext=mContext;
this.mData=mData;
}
@凌驾
公共myViewHolder onCreateViewHolder(视图组父级,int-viewType){
LayoutFlater充气机=LayoutFlater.from(mContext);
视图v=充气机。充气(R.layout.card_项,父项,假);
返回新的myViewHolder(v);
}
@凌驾
公共无效onBindViewHolder(myViewHolder,int位置){
holder.background\u img.setImageResource(mData.get(position.getBackground());
holder.profile_photo.setImageResource(mData.get(position.getProfilePhoto());
holder.tv_title.setText(mData.get(position.getProfileName());
holder.tv\n followers.setText(mData.get(position.getNbFollowers());
}
@凌驾
public int getItemCount(){
返回mData.size();
}
公共类myViewHolder扩展了RecyclerView.ViewHolder{
图像视图剖面图,背景图;
text查看电视标题、电视关注者;
公共myViewHolder(查看项目视图){
超级(项目视图);
profile\u photo=itemView.findviewbyd(R.id.profile\u img);
background\u img=itemView.findviewbyd(R.id.card\u background);
tv\u title=itemView.findviewbyd(R.id.card\u title);
tv\u nbFollowers=itemView.findviewbyd(R.id.card\u nb\u follower);
}
}
}
MainActivity.java是:
package com.example.rfr.listcards;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Window;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// set the status bar background to transparetne
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
// setup recyclerView with the adapter
RecyclerView recyclerView = findViewById(R.id.rv_list);
List<item> mlist = new ArrayList<>();
mlist.add(new item(R.drawable.japon1, "Cities", R.drawable.a1, 2500));
mlist.add(new item(R.drawable.b2, "Cities", R.drawable.a2, 2500));
mlist.add(new item(R.drawable.b3, "Cities", R.drawable.a3, 2500));
mlist.add(new item(R.drawable.b4, "Cities", R.drawable.a4, 2500));
mlist.add(new item(R.drawable.b5, "Cities", R.drawable.a2, 2500));
mlist.add(new item(R.drawable.b6, "Cities", R.drawable.a1, 2500));
mlist.add(new item(R.drawable.b7, "Cities", R.drawable.a1, 2500));
mlist.add(new item(R.drawable.b7, "Cities", R.drawable.a1, 2500));
mlist.add(new item(R.drawable.b7, "Cities", R.drawable.a1, 2500));
Adapter adapter = new Adapter( this,mlist);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager( this));
}
}
package com.example.rfr.listcards;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.Window;
导入android.view.WindowManager;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//将状态栏背景设置为transparetne
windoww=getWindow();
w、 setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
//使用适配器安装recyclerView
RecyclerView RecyclerView=findViewById(R.id.rv_列表);
List mlist=new ArrayList();
列表添加(新项目(R.drawable.japon1,“城市”,R.drawable.a1,2500));
列表添加(新项目(R.drawable.b2,“城市”,R.drawable.a2,2500));
列表添加(新项目(R.drawable.b3,“城市”,R.drawable.a3,2500);
列表添加(新项目(R.drawable.b4,“城市”,R.drawable.a4,2500);
列表添加(新项目(R.dravable.b5,“城市”,R.dravable.a2500));
列表添加(新项目(R.drawable.b6,“城市”,R.drawable.a1,2500));
列表添加(新项目(R.drawable.b7,“城市”,R.drawable.a1,2500));
列表添加(新项目(R.drawable.b7,“城市”,R.drawable.a1,2500));
列表添加(新项目(R.drawable.b7,“城市”,R.drawable.a1,2500));
适配器=新适配器(此,mlist);
recyclerView.setAdapter(适配器);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
}
}
如果尝试debbug模式,只有当我将制动点放在MainActivity.java的最后一个}时,应用程序才会崩溃
你能看出什么地方不对劲吗?
看着这期XD,我的眼睛已经很痛了,就为了未来的读者。堆栈跟踪指出了这个问题:
Process: com.example.rfr.listcards, PID: 11532
android.content.res.Resources$NotFoundException: String resource ID #0x9c4
at android.content.res.Resources.getText(Resources.java:348)
at android.widget.TextView.setText(TextView.java:5831)
at com.example.rfr.listcards.Adapter.onBindViewHolder(Adapter.java:38)
at com.example.rfr.listcards.Adapter.onBindViewHolder(Adapter.java:13)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
是GetText和setText导致了问题
感谢迈克的帮助查看以确定撞车原因。嗨,迈克M。在你的帮助下,我找到了问题。堆栈跟踪可能看起来很吓人,但它很有帮助:你是否解决了它?现在我只是对lines holder.tv_title.setText(mData.get(position.getProfileName())进行了注释;holder.tv\n followers.setText(mData.get(position.getNbFollowers());现在是凌晨2点睡觉的时间:)好吧,兄弟,当你醒来的时候,我确信getNbFollowers会返回一个整数。尝试使用
holder.tv\nbFollowers.setText(String.valueOf(mData.get(position.getNbFollowers())代码>嗨,穆斯塔夫,你说得对!听到那个兄弟的话我们会很高兴的