Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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
Java 是否从片段更新RecycleView?_Java_Android_Android Recyclerview - Fatal编程技术网

Java 是否从片段更新RecycleView?

Java 是否从片段更新RecycleView?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在尝试将对象添加到此RecycleView。当我将对象添加到初始ArrayList时,它们都会显示出来。但是,当我尝试添加一个对象并从HomeFragment调用notifyDataSetChanged时,UI上什么也没有发生 HomeFragment.java HomeAdapter.java 去掉这一行: mRecyclerView.setHasFixedSizetrue 固定大小是指项目数量,而不是布局大小 public class HomeFragment extends Fragm

我正在尝试将对象添加到此RecycleView。当我将对象添加到初始ArrayList时,它们都会显示出来。但是,当我尝试添加一个对象并从HomeFragment调用notifyDataSetChanged时,UI上什么也没有发生

HomeFragment.java

HomeAdapter.java

去掉这一行:

mRecyclerView.setHasFixedSizetrue

固定大小是指项目数量,而不是布局大小

public class HomeFragment extends Fragment {
    View myView;
    private RecyclerView mRecyclerView;
    private HomeAdapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    private ArrayList<Note> myNotes;
    private Activity activity;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        myView = inflater.inflate(R.layout.first_layout, container, false);

        mRecyclerView = (RecyclerView) myView.findViewById(R.id.list12313);

        //linear layout manager
        mLayoutManager = new LinearLayoutManager(activity);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());

        //adapter
        myNotes = new ArrayList<Note>();
        myNotes.add(new Note("Welcome to WITS Mobile", "Logged in as: " + LoginActivity.witsName));
        myNotes.add(new Note("Version 0.1 ALPHA", "- Early Internal Alpha"));
        //myNotes.add(new Note());

        mAdapter = new HomeAdapter(myNotes, activity);
        mRecyclerView.setAdapter(new SlideInBottomAnimationAdapter(mAdapter));

        setHasOptionsMenu(true);
        return myView;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.first, menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId())
        {
            case R.id.action_add:
                addItem();
                return true;
            case R.id.action_CLR:
                clear();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public void addItem()
    {
        Note e = new Note("New Title", "New Body");
        mAdapter.addItem(e);
    }

    public void clear()
    {
        mAdapter.clear();
    }
}
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder>
{
    private ArrayList<Note> mNotes;
    private int lastPosition = -1;
    private Context context;

    public HomeAdapter(ArrayList<Note> list, Context context)
    {
        this.mNotes = list;
        this.context = context;
    }

    public void clear()
    {
        mNotes.clear();
        notifyDataSetChanged();
    }

    public void addItem(Note n)
    {
        System.out.println("add");
        mNotes.add(n);
        notifyDataSetChanged();
    }

    public static class ViewHolder extends  RecyclerView.ViewHolder
    {
        public View view;
        public ViewHolder(View itemView) {
            super(itemView);
            view = itemView;
        }
    }


    public HomeAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        //create new view
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_card, viewGroup, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    public TextView title;
    public TextView subtext;

    @Override
    public void onBindViewHolder(HomeAdapter.ViewHolder viewHolder, int i)
    {
        //Replace contents of a view, called by layout manager
        title = (TextView) viewHolder.view.findViewById(R.id.title);
        subtext = (TextView) viewHolder.view.findViewById(R.id.subtext);

        title.setText(mNotes.get(i).getTitle());
        subtext.setText(mNotes.get(i).getBody());

        setAnimation(viewHolder.view, i);
    }
    private void setAnimation(View viewToAnimate, int position)
    {
        // If the bound view wasn't previously displayed on screen, it's animated
        if (position > lastPosition)
        {
            Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left);
            viewToAnimate.startAnimation(animation);
            lastPosition = position;
        }
    }
    @Override
    public int getItemCount() {
        return mNotes.size();
    }
}