Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段中的Arraylist始终返回大小0_Android_Arraylist_Fragment - Fatal编程技术网

Android 片段中的Arraylist始终返回大小0

Android 片段中的Arraylist始终返回大小0,android,arraylist,fragment,Android,Arraylist,Fragment,Im使用片段在recyclerview中显示sqlite数据库中的数据。我设置了一个textView,其中如果arraylist.size==0,它将显示一条消息,如果不是,则不会显示。问题是arraylist.size始终返回零,即使数据库中有数据 在向数据库添加数据时,我使用 add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

Im使用片段在recyclerview中显示sqlite数据库中的数据。我设置了一个textView,其中如果arraylist.size==0,它将显示一条消息,如果不是,则不会显示。问题是arraylist.size始终返回零,即使数据库中有数据

在向数据库添加数据时,我使用

add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView errorWeight = (TextView)weight.getSelectedView();
            TextView errorPer = (TextView)per.getSelectedView();
            TextView errorRepeat = (TextView)repeat.getSelectedView();

            if (name_food.getText().toString().trim().equalsIgnoreCase("")) {
                name_food.setError("Please add a title to the task");
            }
            else if (date.getText().toString().trim().equalsIgnoreCase("")) {
                date.setError("Set date to start");
            }
            else if (time.getText().toString().trim().equalsIgnoreCase("")) {
                time.setError("Set time to start");
            }
            else if (quantity.getText().toString().trim().equalsIgnoreCase("")) {
                quantity.setError("Set amount of food");
            }
            else if (weight.getSelectedItem().toString().trim().equalsIgnoreCase("Weight")) {
                errorWeight.setError("Set weight of food");
            }
            else if (per.getSelectedItem().toString().trim().equalsIgnoreCase("Per")) {
                errorPer.setError("Set Per meal or per day");
            }
            else if (repeat.getSelectedItem().toString().trim().equalsIgnoreCase("Repeat Task after")) {
                errorRepeat.setError("Set task repetition");
            }
            else
            {
                name_food.setError(null);
                date.setError(null);
                time.setError(null);
                quantity.setError(null);
                errorWeight.setError(null);
                errorPer.setError(null);
                errorRepeat.setError(null);
                arrayLists=new ArrayList<>();
                food_model item=new food_model();
                db=new food_database(add_food.this);
                adapter=new foodRecyclerAdapter(add_food.this,arrayLists);
                item.setPet_id(Integer.valueOf(petid.getText().toString()));
                item.setPet_name(name_pet.getText().toString());
                item.setType_food(name_food.getText().toString());
                item.setDate(date.getText().toString());
                item.setTime(time.getText().toString());
                item.setQuantity(quantity.getText().toString());
                item.setFood_weight(weight.getSelectedItem().toString());
                item.setMeal(per.getSelectedItem().toString());
                item.setNote(note.getText().toString());
                item.setSched(repeat.getSelectedItem().toString());
                boolean addfood=db.insertDataTofood(item);
                if(addfood)
                {
                    adapter.addItem(item);
                    Toast.makeText(add_food.this,"Task has been added",Toast.LENGTH_SHORT).show();
                    Toast.makeText(add_food.this,"Item added"+arrayLists.size(),Toast.LENGTH_SHORT).show();
                    Intent intent=new Intent(add_food.this,foodActivity.class);
                    intent.putExtra("name",name);
                    intent.putExtra("id",id);
                    intent.putExtra("breed",breed);
                    intent.putExtra("type",type);
                    startActivity(intent);
                    finish();
                }
                else
                {
                    Toast.makeText(add_food.this,"Task not added",Toast.LENGTH_SHORT).show();
                }

            }

        }
    });
然后是碎片

    public class food_sched extends Fragment {
FloatingActionButton floatingActionButton;
RecyclerView recyclerView;
TextView reminder,subreminder;
Context context;
ArrayList<food_model> model;
Cursor c;
foodRecyclerAdapter adapter;
    LinearLayoutManager linearLayoutManager;
    String name,id,type,breed;
    public food_sched() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        model=new ArrayList<>();
        Intent taker=getActivity().getIntent();
        name=taker.getStringExtra("name");
        id=taker.getStringExtra("id");
        type=taker.getStringExtra("type");
        breed=taker.getStringExtra("breed");
        context=getActivity();
        if(model.size()==0)
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.frag_food_sched, container, false);

        recyclerView=(RecyclerView) view.findViewById(R.id.food_recyclerview);
        reminder=(TextView) view.findViewById(R.id.food_reminder);
        subreminder=(TextView) view.findViewById(R.id.food_reminder_sub);
        floatingActionButton=(FloatingActionButton)view.findViewById(R.id.add_food);
        linearLayoutManager = new LinearLayoutManager(getContext());
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(linearLayoutManager);
        loadfoodDB(context);
        setFoodAlarms(context);
        updateviews(context);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Intent intent=new Intent(getContext(),add_food.class);
            intent.putExtra("petname",name);
            intent.putExtra("petid",id);
                intent.putExtra("petbreed",breed);
                intent.putExtra("pettype",type);
            getContext().startActivity(intent);
            getActivity().finish();
            }
        });

        adapter.updateDataOnNotification(model);
        recyclerView.setVisibility(View.VISIBLE);
        return view;

    }
这种方法可以从数据库中加载数据

public void loadfoodDB(Context context)
{
    food_database db=new food_database(context);
    food_db_retrieve foodDbRetrieve=new food_db_retrieve(context);
    foodDbRetrieve.openDB();
    model=new ArrayList<>();
    int newid=Integer.valueOf(id);

    c = db.queryData("select * from food_schedule WHERE pet_id ='"+newid+"' ORDER BY food_ID DESC");

    try {
        if(c != null)
        {
            if(c.moveToFirst())
            {
                do{
                    food_model items=new food_model();
                    items.setFood_id(c.getInt(0));
                    items.setPet_id(c.getInt(1));
                    items.setPet_name(c.getString(2));
                    items.setType_food(c.getString(3));
                    items.setDate(c.getString(4));
                    items.setTime(c.getString(5));
                    items.setQuantity(c.getString(6));
                    items.setFood_weight(c.getString(7));
                    items.setMeal(c.getString(8));
                    items.setNote(c.getString(9));
                    items.setSched(c.getString(10));
                    model.add(items);
                }while (c.moveToNext());
            }
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    adapter = new foodRecyclerAdapter(context,model);
    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
    foodDbRetrieve.closeDB();
}

你能告诉我为什么它返回0吗

这是因为您在创建ArrayList之后才显示toast

将Toast移动到onCreateView或在onCreate中加载数据

因为onCreateView在onCreate之后调用

您的onCreateView应该是这样的

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.frag_food_sched, container, false);

        -------------------
        -------------------
        loadfoodDB(context);


      if(model.size()==0)
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }

         ------------------------
         ------------------------

        return view;

    }
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.frag_food_sched, container, false);

        -------------------
        -------------------
        loadfoodDB(context);


      if(model.size()==0)
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(context,"size is "+model.size(),Toast.LENGTH_SHORT).show();
        }

         ------------------------
         ------------------------

        return view;

    }