我正在尝试重新创建三星设备上的备忘录应用程序。该备忘录应用程序应该只创建标题和正文的备忘录,并将其显示在回收者视图或列表中。 每当我进入MainActivity时,我的应用程序就会崩溃
MainActivity.class
public class MainActivity extends AppCompatActivity
{
ArrayList<Memo> memos;
RecyclerView memoList;
MemoAdapter memoAdapter;
Button addMemo;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
memoList = findViewById(R.id.memoList);
addMemo = findViewById(R.id.addMemo);
memoAdapter = new MemoAdapter(this,memos);
memoList.setAdapter(memoAdapter);
}
}
备忘录类
public class Memo
{
private String mtitle;
private String mbody;
public Memo(String title, String body)
{
mtitle = title;
mbody = body;
}
public String getTitle()
{
return mtitle;
}
public void setTitle(String mtitle) {
this.mtitle = mtitle;
}
public String getBody() {
return mbody;
}
public void setBody(String mbody) {
this.mbody = mbody;
}
}
MemoAdapter.class
public class MemoAdapter extends RecyclerView.Adapter<MemoAdapter.ViewHolder>
{
private Context context;
private ArrayList<Memo> memo;
public MemoAdapter(Context context, ArrayList<Memo> memo)
{
this.context = context;
this.memo = memo;
}
@NonNull
@Override
public MemoAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(context).inflate(R.layout.layout_listitem,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MemoAdapter.ViewHolder holder, int position)
{
holder.listitem.setText(memo.get(position).getTitle());
/*holder.linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
TODO: open composeactivity to edit the text of this memo
}
});*/
}
@Override
public int getItemCount() {
return memo.size();
}
class ViewHolder extends RecyclerView.ViewHolder
{
private TextView listitem;
private LinearLayout linearLayout;
public ViewHolder(@NonNull View itemView)
{
super(itemView);
listitem = itemView.findViewById(R.id.listItem);
linearLayout = itemView.findViewById(R.id.LL);
}
}
感谢您的帮助,如果需要发布更多信息,请告诉我。
答案 0 :(得分:0)
没有堆栈跟踪,很难说出实际的问题。但是根据您提到的代码,您没有在使用import React from 'react'
import styled from 'styled-components'
export default function App() {
return (
{/* This button would render with the default styles from Button.tsx */}
<Button>Button One</Button>
{/* This button would render with extended styles, a blue background for example */}
<Button>Button Two</Button>
)
}
之前对其进行初始化。因此,可能是memos
。
NullPointerException
答案 1 :(得分:0)
将布局管理器设置为recyclerview。并尝试运行
<html lang="en">
答案 2 :(得分:0)
尝试在MemoAdapter类中为此行添加一些null检查失败安全条件。
holder.listitem.setText(memo.get(position).getTitle());
因为如果备忘录ArrayList为空,而您仍在尝试获取Title,则您将面临错误。因此,放置一个if条件,并检查其是否为空。
然后为RecyclerView设置一个布局管理器。检查是否可行。
如果再次遇到错误,请尝试从逻辑此处粘贴错误日志。我们可以从中清楚地了解这个问题。
谢谢,希望对您有所帮助。
答案 3 :(得分:0)
您初始化了memos
吗?
ArrayList<Memo> memos;
将是null
,而memo.size();
将得到NPE。