【发布时间】:2021-11-06 16:48:40
【问题描述】:
我正在尝试使用 RecyclerView 显示一个列表,但它没有从我的片段中显示。请帮忙 这是我的片段代码:
公共类 ActivityLogSection 扩展 Fragment {
按钮添加活动; DBHelper dbHelper;
ActivityAdapter activityAdapter;
ArrayList<String> activityName, activityTime;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_log_section, container, false);
RecyclerView recyclerView = rootView.findViewById(R.id.recyclerView);
FragmentActivity ac = getActivity();
recyclerView.setLayoutManager(new LinearLayoutManager(ac));
addActivity = rootView.findViewById(R.id.addActivity);
addActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), AddActivity.class);
startActivity(intent);
}
});
dbHelper = new DBHelper(getContext());
activityName = new ArrayList<>();
activityTime = new ArrayList<>();
storeActivityDataInArray();
activityAdapter = new ActivityAdapter(getContext(), activityName, activityTime);
recyclerView.setAdapter(activityAdapter);
return rootView;
}
public void storeActivityDataInArray() {
Cursor cursor = dbHelper.getActivityData();
if (cursor.getCount() == 0) {
Toast.makeText(getActivity(), "No data present in the database", Toast.LENGTH_SHORT).show();
}else {
while(cursor.moveToNext()) {
activityName.add(cursor.getString(0));
activityTime.add(cursor.getString(1));
}
}
}
}
这是我的适配器代码:
公共类 ActivityAdapter 扩展 RecyclerView.Adapter
private Context context;
private ArrayList activityName, activityTime;
public ActivityAdapter(Context context, ArrayList activityName, ArrayList activityTime) {
this.context = context;
this.activityName = activityName;
this.activityTime = activityTime;
}
@NonNull
@Override
public ActivityAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.recyclerview_layout, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.activityName.setText(String.valueOf(activityName.get(position)));
holder.activityTime.setText(String.valueOf(activityTime.get(position)));
}
@Override
public int getItemCount() {
return 0;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView activityName, activityTime;
LinearLayout recyclerview_layout;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
activityName = itemView.findViewById(R.id.tvActivityName);
activityTime = itemView.findViewById(R.id.tvActivityTime);
recyclerview_layout = itemView.findViewById(R.id.recyclerViewLayout);
}
}
}
这是 AddActivity 部分的代码:
公共类 AddActivity 扩展 AppCompatActivity {
EditText etActivityName, etActivityTime;
Button addBtn;
Calendar calendar;
SimpleDateFormat simpleDateFormat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
etActivityName = findViewById(R.id.etActivityName);
etActivityTime = findViewById(R.id.etActivityTime);
addBtn = findViewById(R.id.addBtn);
// String acLog = etActivity.getText().toString().trim() + " - " + simpleDateFormat.format(calendar.getTime());
etActivityTime.setInputType(InputType.TYPE_NULL);
etActivityTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateAndTimeDialog(etActivityTime);
}
});
calendar = showDateAndTimeDialog(etActivityTime);
simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm");
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBHelper dbHelper = new DBHelper(AddActivity.this);
String activityName = etActivityName.getText().toString().trim();
String activityTime = simpleDateFormat.format(calendar.getTime());
dbHelper.addActivity(activityName, activityTime);
}
});
}
private Calendar showDateAndTimeDialog(EditText date_time_input) {
Calendar calendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
android.app.TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm");
date_time_input.setText(simpleDateFormat.format(calendar.getTime()));
}
};
new TimePickerDialog(AddActivity.this, timeSetListener, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false).show();
}
};
new DatePickerDialog(this, dateSetListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
return calendar;
}
}
我不明白为什么会这样,请帮助我
【问题讨论】:
-
值被添加到数据库中,但没有添加到recyclerView
-
那是因为您在 public int getItemCount() {} 上返回 0 - 所以您的 recyclerview 将填充 0 个项目
标签: android android-studio android-fragments