zoukankan      html  css  js  c++  java
  • 二月12日

      今天将Fragment中的代码完成了首先是第一个fragment:

    package com.eb.writeaccount;
    
    
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.fragment.app.Fragment;
    import androidx.lifecycle.LiveData;
    import androidx.lifecycle.Observer;
    import androidx.lifecycle.ViewModelProviders;
    import androidx.navigation.NavController;
    import androidx.navigation.Navigation;
    import androidx.recyclerview.widget.DefaultItemAnimator;
    import androidx.recyclerview.widget.DividerItemDecoration;
    import androidx.recyclerview.widget.ItemTouchHelper;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.SearchView;
    
    import com.google.android.material.floatingactionbutton.FloatingActionButton;
    import com.google.android.material.snackbar.Snackbar;
    
    import java.util.List;
    
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class wos extends Fragment {
    
        private MyViewModel myViewModel;
        private RecyclerView recyclerView;
        private MyAdapter myAdapter;
        private LiveData<List<Word>> filteredWords;
        private static final String VIEW_TYPE_SHP = "view_type_shp";
        private static final String IS_USING_CARD_VIEW = "is_using_card_view";
        private List<Word> allWords;
        private boolean undoAction;
        private DividerItemDecoration dividerItemDecoration;
    
        public wos() {
            // Required empty public constructor
            setHasOptionsMenu(true);
        }
    
        @Override
        public boolean onOptionsItemSelected(@NonNull MenuItem item) {
            AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
            builder.setTitle("清空数据");
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    myViewModel.deleteAllWords();
                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
    
                }
            });
            builder.create();
            builder.show();
            return super.onOptionsItemSelected(item);
        }
        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            super.onCreateOptionsMenu(menu, inflater);
            inflater.inflate(R.menu.main_menu, menu);
            SearchView searchView = (SearchView) menu.findItem(R.id.app_bar_search).getActionView();
            searchView.setMaxWidth(1000);
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }
    
                @Override
                public boolean onQueryTextChange(String newText) {
                    String pattern = newText.trim();
                  filteredWords.removeObservers(getViewLifecycleOwner());      //先移除之前在onActivityCreated中添加的observer
                    filteredWords = myViewModel.findWordsWithPattern(pattern);
                    filteredWords.observe(getViewLifecycleOwner(), new Observer<List<Word>>() {
                        @Override
                        public void onChanged(List<Word> words) {
                            int temp = myAdapter.getItemCount();
                            allWords = words;
                            if (temp != words.size()) {
                                myAdapter.submitList(words);
    
                            }
                        }
                    });
                    return true;
                }
            });
        }
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            myViewModel = ViewModelProviders.of(requireActivity()).get(MyViewModel.class);
            recyclerView = requireActivity().findViewById(R.id.recycle);
            recyclerView.setLayoutManager(new LinearLayoutManager(requireActivity()));
        myAdapter=new MyAdapter(myViewModel);
        recyclerView.setAdapter(myAdapter);
            recyclerView.setItemAnimator(new DefaultItemAnimator() {
                @Override
                public void onAnimationFinished(@NonNull RecyclerView.ViewHolder viewHolder) {
                    super.onAnimationFinished(viewHolder);
                    LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
                    if (linearLayoutManager != null) {
                        int firstPosition = linearLayoutManager.findFirstVisibleItemPosition();
                        int lastPosition = linearLayoutManager.findLastVisibleItemPosition();
                        for (int i = firstPosition; i <= lastPosition; i++) {
                            MyAdapter.MyViewHolder holder = (MyAdapter.MyViewHolder) recyclerView.findViewHolderForAdapterPosition(i);
                            if (holder != null) {
                                holder.textViewNumber.setText(String.valueOf(i + 1));
    
                            }
                        }
                    }
    
                }
            });
    
            dividerItemDecoration = new DividerItemDecoration(requireActivity(),DividerItemDecoration.VERTICAL);
            recyclerView.addItemDecoration(dividerItemDecoration);
    
    
            //recyclerView.setAdapter(myAdapter1);
            filteredWords = myViewModel.getAllWordsLive();
            filteredWords.observe(getViewLifecycleOwner(), new Observer<List<Word>>() {
                @Override
                public void onChanged(List<Word> words) {
                    int temp = myAdapter.getItemCount();
                    allWords = words;
                    if (temp != words.size()) {
                        if (temp < words.size() && !undoAction) {
    
                            recyclerView.smoothScrollBy(0,-200);
    
    
                        }
                        undoAction = false;
    
                        myAdapter.submitList(words);
                    }
                }
            });
            new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.START | ItemTouchHelper.END) {
                @Override
                public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
    //               Word wordFrom=allWords.get(viewHolder.getAdapterPosition());
    //                Word wordto=allWords.get(target.getAdapterPosition());
    //                int i=wordFrom.getId();
    //                wordFrom.setId(wordto.getId());
    //                wordto.setId(i);
    //                myViewModel.updateWords(wordFrom,wordto);
    //                myAdapter.notifyItemMoved(viewHolder.getAdapterPosition(),target.getAdapterPosition());
                    return false;
                }
    
                @Override
                public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                    final Word word=allWords.get(viewHolder.getAdapterPosition());
                    myViewModel.deleteWords(word);
                    Snackbar.make(requireActivity().findViewById(R.id.wosFragment),"删除了一个字符",Snackbar.LENGTH_SHORT).setAction("撤销", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            myViewModel.insertWords(word);
                        }
                    }).show();
                }
            }).attachToRecyclerView(recyclerView);
    
    
            FloatingActionButton floatingActionButton = requireActivity().findViewById(R.id.floatingActionButton);
            floatingActionButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    NavController navController = Navigation.findNavController(v);
                    navController.navigate(R.id.action_wos_to_addfragment);
                }
            });
    
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_wos, container, false);
        }
    
    }

    然后将输入的Fgrment写完

    package com.eb.writeaccount;


    import android.content.Context;
    import android.os.Bundle;

    import androidx.annotation.Nullable;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentActivity;
    import androidx.lifecycle.ViewModelProviders;
    import androidx.navigation.NavController;
    import androidx.navigation.Navigation;

    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.Button;
    import android.widget.EditText;


    /**
    * A simple {@link Fragment} subclass.
    */
    public class addfragment extends Fragment {
    private Button buttonSubmit;
    private EditText editTextmoney,editTexttime;
    private MyViewModel myViewModel;

    public addfragment() {
    // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_addfragment, container, false);
    }
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    FragmentActivity activity = requireActivity();
    myViewModel = ViewModelProviders.of(activity).get(MyViewModel.class);
    buttonSubmit = activity.findViewById(R.id.button);
    editTextmoney = activity.findViewById(R.id.editTextmoney);
    editTexttime = activity.findViewById(R.id.editTexttime);
    buttonSubmit.setEnabled(false);
    editTextmoney.requestFocus();
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editTextmoney,0);

    TextWatcher textWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    String english = editTextmoney.getText().toString().trim();
    String chinese = editTexttime.getText().toString().trim();
    buttonSubmit.setEnabled(!english.isEmpty() && !chinese.isEmpty());
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
    };
    editTextmoney.addTextChangedListener(textWatcher);
    editTexttime.addTextChangedListener(textWatcher);
    buttonSubmit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    String english = editTextmoney.getText().toString().trim();
    String chinese = editTexttime.getText().toString().trim();
    Word word = new Word(english,chinese);
    myViewModel.insertWords(word);
    NavController navController = Navigation.findNavController(v);
    navController.navigateUp();
    InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(v.getWindowToken(),0);
    }
    });
    }

    }
  • 相关阅读:
    电容降压的工作原理与计算
    B站开源ijkplayer 等多个项目
    Kindle支持哪些格式
    PPM格式解析
    YUV RGB播放器 打开, 显示RGB数据
    How to print 如何输出 int64_t,uint64_t的值 in C
    FileSeek文件内容搜索工具下载
    对android录制的NV21视频数据进行旋转(90,180,270)与剪切
    Adobe Flash Media Server安装
    Linux使用du和df查看磁盘和文件夹占用空间
  • 原文地址:https://www.cnblogs.com/guziteng1/p/12323771.html
Copyright © 2011-2022 走看看