![](/img/trans.png)
[英]My flashlight app is slow and crashes allot i don't know what I'm doing wrong
[英]App crashes when button onclicklistener is clicked to go to recycler view - don't know what is wrong
我是 android studio 的新手,我目前正在尝试创建一个应用程序,在切换到新活动后显示旅游景点的回收者视图。
但是,当我尝试从登录页面切换到带有回收器视图的新活动时,应用程序崩溃了,我不知道为什么,任何帮助和建议将不胜感激。 谢谢!
PS:没有错误消息,一切都很好,所以我不确定从哪里开始
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btEnter);
//Enter into app main function button
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, TopLocationList.class);
startActivity(intent);
}
});
}
public class TopLocationList extends AppCompatActivity {
RecyclerView recyclerView;
String s1[], s2[];
int images[] = {R.drawable.sydneyoperahouse, R.drawable.bondi, R.drawable.botanicgardens, R.drawable.harbourbridgeclimb,
R.drawable.rocks, R.drawable.thethreesisters, R.drawable.spicealley, R.drawable.thequay, R.drawable.mrwong,
R.drawable.thegrounds, R.drawable.manly};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_top_location_list);
recyclerView = findViewById(R.id.recyclerView);
s1 = getResources().getStringArray(R.array.top_location_names);
s2 = getResources().getStringArray(R.array.location_suburb);
AdapterClass adapterClass = new AdapterClass(this, s1, s2, images);
recyclerView.setAdapter(adapterClass);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder> {
String data1[], data2[];
int images[];
Context context;
public AdapterClass(Context ct, String s1[], String s2[], int img[]){
context = ct;
data1 = s1;
data2 = s2;
images = img;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.recyclerviewrows, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.mAttractionSuburb.setText(data1[position]);
holder.mAttractionName.setText(data2[position]);
holder.mImage.setImageResource(images[position]);
}
@Override
public int getItemCount() {
return data1.length;
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView mAttractionName, mAttractionSuburb;
ImageView mImage;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
mAttractionName = itemView.findViewById(R.id.tvAttractionName);
mAttractionSuburb = itemView.findViewById(R.id.tvAttractionSuburb);
mImage = itemView.findViewById(R.id.ivAttractionImage);
}
}
<string name="app_name">TourismGuide</string>
<string-array name = "top_location_names">
<item> Sydney Opera House </item>
<item> Bondi Beach </item>
<item> Royal Botanic Garden </item>
<item> Harbour Bridge </item>
<item> The Rocks </item>
<item> Three Sisters Walk </item>
<item> Taronga Zoo </item>
<item> Spice Alley </item>
<item> The Quay </item>
<item> Mr Wong </item>
<item> The Grounds of Alexandria </item>
<item> Manly Beach </item>
</string-array>
<string-array name="location_suburb">
<item> Sydney </item>
<item> Bondi </item>
<item> Sydney </item>
<item> Sydney </item>
<item> Sydney </item>
<item> Katoomba </item>
<item> Mosman </item>
<item> Chippendale </item>
<item> Sydney </item>
<item> Wynyard </item>
<item> Alexandria </item>
<item> Manly </item>
</string-array>
如果这很长,我真的很抱歉,再次非常感谢任何帮助。 谢谢!
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
AdapterClass adapterClass = new AdapterClass(this, s1, s2, images);
recyclerView.setAdapter(adapterClass);
您需要首先将 Layoutmanager 分配给 RecyclerView,然后将适配器附加到您的 recyclerview。
附注。 通过一些简单的 RecyclerView 教程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.