【发布时间】:2020-02-10 07:19:15
【问题描述】:
我使用 BottomSHeetDialogfragment 创建了一个底页,按下保存按钮后,我的底页上有 2 个文本框和 1 个名为保存按钮的按钮成功到数据库,但我的列表视图没有自动更新插入的值
现在如何自动更新我的列表视图?
我的适配器类是...
public class MainListViewAdapter extends BaseAdapter {
Context context;
ArrayList<String> taskList;
ArrayList<String> detailList;
LayoutInflater layoutInflater;
public MainListViewAdapter(Context context, ArrayList<String> taskList, ArrayList<String> detailList) {
this.context = context;
this.taskList = taskList;
this.detailList = detailList;
}
@Override
public int getCount() {
return taskList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
if (convertView == null) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.main_activity_list_view, parent, false);
}
TextView tasktitleTv = convertView.findViewById(R.id.list_item_title_tv_id);
TextView taskDetailsTv = convertView.findViewById(R.id.list_item_detail_tv_id);
final CheckBox checkBox = convertView.findViewById(R.id.list_item_checkbox_id);
convertView.setClickable(true);
convertView.setFocusable(true);
convertView.setBackgroundResource(android.R.drawable.menuitem_background);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, ""+position, Toast.LENGTH_SHORT).show();
}
});
tasktitleTv.setText(taskList.get(position));
taskDetailsTv.setText(detailList.get(position));
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Toast.makeText(context, "Checked", Toast.LENGTH_SHORT).show();
taskList.remove(position);
detailList.remove(position);
MainListViewAdapter.this.notifyDataSetChanged();
} else {
return;
}
if (isChecked) {
buttonView.toggle();
}
}
});
return convertView;
}
}
而我的 mainActivity.java 类是
public class MainActivity extends AppCompatActivity {
private TextView taskHeaderTv;
public ListView mainListview;
private MainListViewAdapter mainListViewAdapter;
private FloatingActionButton floatingActionButton;
private BottomAppBar bottomAppBar;
private DataBaseHelper dataBaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
taskHeaderTv = findViewById(R.id.task_header_tv_id);
floatingActionButton = findViewById(R.id.floating_action_button);
bottomAppBar = findViewById(R.id.bottomAppBar);
fabClick();
bottomAppBarClick();
// set list view content
dataBaseHelper = new DataBaseHelper(this);
ArrayList<String> taskList = dataBaseHelper.getAllTitle();
ArrayList<String> detailList = dataBaseHelper.getALlDetails();
mainListview = findViewById(R.id.main_activity_listview_id);
mainListViewAdapter = new MainListViewAdapter(this, taskList, detailList);
mainListview.setAdapter(mainListViewAdapter);
mainListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, position, Toast.LENGTH_SHORT).show();
}
});
mainListViewAdapter.notifyDataSetChanged();
}
}
我的 Fragment 类是
public class ListItemInputFragment extends BottomSheetDialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list_item_input, container, false);
final EditText newTaskEt, detailsEt;
TextView savBtn;
newTaskEt = view.findViewById(R.id.new_task_et_id);
detailsEt = view.findViewById(R.id.details_et_id);
savBtn = view.findViewById(R.id.save_btn_id);
savBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = newTaskEt.getText().toString();
String detail = detailsEt.getText().toString();
DataBaseHelper dataBaseHelper = new DataBaseHelper(getContext());
long row = dataBaseHelper.insertData(title, detail);
if (row == -1) {
Toast.makeText(getActivity().getBaseContext(), "Data not inserted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity().getBaseContext(), "Data Inserted", Toast.LENGTH_SHORT).show();
}
dismiss();
}
});
return view;
}
}
【问题讨论】:
-
在片段中的 dataBaseHelper.insertData 之后显示什么列表视图?
标签: android sqlite listview fragment