android - 查看 SQLite 数据库时,片段列表视图崩溃
问题描述
当我向下滚动到列表视图的最底部时,我的片段使我的应用程序崩溃。它适用于具有相同代码的另一个片段,但它只会在这个特定的片段上崩溃。请帮帮我,我真的不知道该怎么办。我的代码有什么问题吗?如果有,一定要指出来。我真的很感激。
public class LunchFragment extends Fragment {
ListView userFoods;
SQLiteOpenHelper helper,helper1;
SQLiteDatabase db,db1;
String name,allergy,condition="";
Double bmi=0.0;
ArrayList<String> listItemz;
ArrayAdapter adapter2;
public LunchFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view1 = inflater.inflate(R.layout.fragment_lunch,container,false);
helper1=new Database(getActivity());
db1=helper1.getReadableDatabase();
helper= new FoodDB(getActivity());
db=helper.getReadableDatabase();
userFoods=(ListView)view1.findViewById(R.id.userFoods);
listItemz= new ArrayList<>();
try {
getStats();
disorderz();
viewData();
adapter2= new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,listItemz);
userFoods.setAdapter(adapter2);
userFoods.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String text=userFoods.getItemAtPosition(i).toString();
Toast.makeText(getActivity(), ""+text, Toast.LENGTH_SHORT).show();
}
});
}catch (Exception g){
Toast.makeText(getActivity(), "ERROR", Toast.LENGTH_SHORT).show();
}
return view1;
}
private void viewData() {
Cursor cursor=db.rawQuery("SELECT * FROM Lunch",null);
if(cursor.getCount()==0){
Toast.makeText(getActivity(), "No data to show", Toast.LENGTH_SHORT).show();
}else{
while(cursor.moveToNext()){
listItemz.add(cursor.getString(cursor.getColumnIndex("Name")));
}
adapter2= new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,listItemz);
userFoods.setAdapter(adapter2);
}
cursor.close();
}
public void getStats(){
Cursor cbm= db1.rawQuery("SELECT bmi FROM "+TABLE_bmi+" WHERE ID = 1",null);
cbm.moveToFirst();
bmi=cbm.getDouble(0);
}
public void disorderz(){
Cursor c = db1.rawQuery("SELECT Disorders FROM "+TABLE_info,null);
c.moveToFirst();
condition=c.getString(c.getColumnIndex("Disorders"));
}
}
解决方案
推荐阅读
- ios - 使用 Objective-C 代码在 Swift 中呈现视图?
- python - 使用 GeoPandas 将坐标列表转换为多边形
- java - 如何从除主要活动之外的类中编辑动态添加的按钮
- c# - Linq 查询和潜在的自我加入/分组依据
- python - 在 python 中,将 unix 时间戳转换为日期和时间时出错。操作系统错误 #22
- python - 为什么 matplotlib 'key_press_event' 这么慢
- dns - 将 domain.com:1234 的特定端口转发到不同的 IP
- c# - 为什么我的数学不适用于我的 SQL Server 数据库?
- c# - OnCollideEnter 后暗示的游戏对象不会被破坏?
- css - 如何在 R Shiny Dashboard 中停止数据表相互重叠?