首页 > 解决方案 > 查看 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"));
    }
}

标签: androidandroid-sqlite

解决方案


推荐阅读