Android 在滑动片段上插入sqlite表

Android 在滑动片段上插入sqlite表,android,swipe,Android,Swipe,我正在开发一个带有swipe fragment的应用程序,我的问题是客户端希望,如果他们滑动视图,其中的数据将自动从sqlite表中保存。例如,在视图中,在向EditText输入值后,视图中有一个EditText,当他们滑动到另一个视图或下一个项目时,该值将保存在sqlite表中。 请帮帮我 //我在其中从xml调用viewpager的PagerFragment.java类 public class PagerFragment extends Fragment { private Li

我正在开发一个带有
swipe fragment
的应用程序,我的问题是客户端希望,如果他们滑动视图,其中的数据将自动从sqlite表中保存。例如,在视图中,在向
EditText
输入值后,视图中有一个
EditText
,当他们滑动到另一个视图或下一个项目时,该值将保存在sqlite表中。 请帮帮我

//我在其中从xml调用viewpager的PagerFragment.java类

public class PagerFragment extends Fragment {

    private List<PageData> data;
    private int currentPosition;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_pager, container, false);
        ViewPager mViewPager = (ViewPager) v.findViewById(R.id.pager_view);

        currentPosition = getArguments().getInt("CURRENT_POSITION");
        data = getArguments().getParcelableArrayList("DATA_LIST");

        FragmentItemPagerAdapter fragmentItemPagerAdapter = new FragmentItemPagerAdapter(getFragmentManager(), data);
        mViewPager.setAdapter(fragmentItemPagerAdapter);
        mViewPager.setCurrentItem(currentPosition);
        return v;


    }
公共类PagerFragment扩展片段{
私人名单数据;
私人职位;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机。充气(R.layout.fragment_页面,容器,错误);
ViewPager mViewPager=(ViewPager)v.findViewById(R.id.pager\u视图);
currentPosition=getArguments().getInt(“当前位置”);
data=getArguments().getParcelableArrayList(“数据列表”);
FragmentItemPagerAdapter FragmentItemPagerAdapter=新的FragmentItemPagerAdapter(getFragmentManager(),数据);
mViewPager.setAdapter(fragmentItemPagerAdapter);
mViewPager.setCurrentItem(当前位置);
返回v;
}
//ListviewAdapter.java

public class ListViewAdapter extends ArrayAdapter<PageData> {
    protected List<PageData> data;
    protected LayoutInflater inflater;

    public ListViewAdapter(Activity activity, int textViewResourceId, List<PageData> objects){
        super(activity, textViewResourceId, objects);
        data= objects;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.item_list, parent, false);
        PageData pd = data.get(position);
        TextView tv2 = (TextView)row.findViewById(R.id.cat);
        tv2.setText(pd.getCategory());
//        TextView tv3 = (TextView)row.findViewById(R.id.desc);
//        tv3.setText(pd.getCategory());

        return row;
    }
}
public class FragmentItemPagerAdapter extends FragmentStatePagerAdapter {
    private List<PageData> data;



    public FragmentItemPagerAdapter(FragmentManager fm, List<PageData> data){
        super(fm);
        this.data = data;
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = new PageFragment();
        Bundle args = new Bundle();
        args.putString(PageFragment.id, data.get(position).getId());
        args.putString(PageFragment.cate, data.get(position).getCategory());
        args.putString(PageFragment.code, data.get(position).getCode());
        args.putString(PageFragment.desk, data.get(position).getDesk());
        args.putString(PageFragment.unit, data.get(position).getUnit());
        args.putString(PageFragment.quan, data.get(position).getQuantity());

        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    public static class PageFragment extends Fragment{
        public static final String id = "id";
        public static final String cate = "category";
        public static final String code = "code";
        public static final String desk = "description";
        public static final String unit = "unit";
        public static final String quan = "Quantity";



        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_item, container, false);
            ((TextView) rootView.findViewById(R.id.item_label2)).setText(
                    getArguments().getString(cate));
            ((TextView) rootView.findViewById(R.id.item_label3)).setText(
                    getArguments().getString(code));
            ((TextView) rootView.findViewById(R.id.item_label4)).setText(
                    getArguments().getString(desk));
            ((TextView) rootView.findViewById(R.id.item_label5)).setText(
                    getArguments().getString(unit));
            ((TextView) rootView.findViewById(R.id.item_label6)).setText(
                    getArguments().getString(quan));
            ((TextView) rootView.findViewById(R.id.item_label1)).setText(
                    getArguments().getString(id));
            ((EditText) rootView.findViewById(R.id.editText2)).setText(
                    getArguments().getString(quan));

            return rootView;

        }


    }

}
公共类ListViewAdapter扩展了ArrayAdapter{
受保护名单数据;
充气机;
公共ListViewAdapter(活动、int-textViewResourceId、列表对象){
超级(活动、textViewResourceId、对象);
数据=对象;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
视图行=充气机。充气(R.layout.item_列表,父项,false);
PageData pd=data.get(位置);
TextView tv2=(TextView)row.findViewById(R.id.cat);
tv2.setText(pd.getCategory());
//TextView tv3=(TextView)row.findViewById(R.id.desc);
//tv3.setText(pd.getCategory());
返回行;
}
}
//FragmentItempagerAdapter.java

public class ListViewAdapter extends ArrayAdapter<PageData> {
    protected List<PageData> data;
    protected LayoutInflater inflater;

    public ListViewAdapter(Activity activity, int textViewResourceId, List<PageData> objects){
        super(activity, textViewResourceId, objects);
        data= objects;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.item_list, parent, false);
        PageData pd = data.get(position);
        TextView tv2 = (TextView)row.findViewById(R.id.cat);
        tv2.setText(pd.getCategory());
//        TextView tv3 = (TextView)row.findViewById(R.id.desc);
//        tv3.setText(pd.getCategory());

        return row;
    }
}
public class FragmentItemPagerAdapter extends FragmentStatePagerAdapter {
    private List<PageData> data;



    public FragmentItemPagerAdapter(FragmentManager fm, List<PageData> data){
        super(fm);
        this.data = data;
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = new PageFragment();
        Bundle args = new Bundle();
        args.putString(PageFragment.id, data.get(position).getId());
        args.putString(PageFragment.cate, data.get(position).getCategory());
        args.putString(PageFragment.code, data.get(position).getCode());
        args.putString(PageFragment.desk, data.get(position).getDesk());
        args.putString(PageFragment.unit, data.get(position).getUnit());
        args.putString(PageFragment.quan, data.get(position).getQuantity());

        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    public static class PageFragment extends Fragment{
        public static final String id = "id";
        public static final String cate = "category";
        public static final String code = "code";
        public static final String desk = "description";
        public static final String unit = "unit";
        public static final String quan = "Quantity";



        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_item, container, false);
            ((TextView) rootView.findViewById(R.id.item_label2)).setText(
                    getArguments().getString(cate));
            ((TextView) rootView.findViewById(R.id.item_label3)).setText(
                    getArguments().getString(code));
            ((TextView) rootView.findViewById(R.id.item_label4)).setText(
                    getArguments().getString(desk));
            ((TextView) rootView.findViewById(R.id.item_label5)).setText(
                    getArguments().getString(unit));
            ((TextView) rootView.findViewById(R.id.item_label6)).setText(
                    getArguments().getString(quan));
            ((TextView) rootView.findViewById(R.id.item_label1)).setText(
                    getArguments().getString(id));
            ((EditText) rootView.findViewById(R.id.editText2)).setText(
                    getArguments().getString(quan));

            return rootView;

        }


    }

}
公共类FragmentItemPagerAdapter扩展了FragmentStatePagerAdapter{
私人名单数据;
公共FragmentItemPagerAdapter(FragmentManager fm,列表数据){
超级(fm);
这个数据=数据;
}
@凌驾
公共片段getItem(int位置){
Fragment Fragment=new PageFragment();
Bundle args=新Bundle();
args.putString(PageFragment.id,data.get(position.getId());
args.putString(PageFragment.cate,data.get(position.getCategory());
args.putString(PageFragment.code,data.get(position.getCode());
args.putString(PageFragment.desk,data.get(position.getDesk());
putString(PageFragment.unit,data.get(position.getUnit());
args.putString(PageFragment.quan,data.get(position.getQuantity());
fragment.setArguments(args);
返回片段;
}
@凌驾
public int getCount(){
返回data.size();
}
公共静态类PageFragment扩展了该片段{
公共静态最终字符串id=“id”;
公共静态最终字符串cate=“category”;
公共静态最终字符串code=“code”;
公共静态最终字符串desk=“description”;
公共静态最终字符串unit=“unit”;
公共静态最终字符串quan=“数量”;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u项目,容器,错误);
((TextView)rootView.findviewbyd(R.id.item_label2)).setText(
getArguments().getString(cate));
((TextView)rootView.findViewById(R.id.item_label3)).setText(
getArguments().getString(代码));
((TextView)rootView.findviewbyd(R.id.item_label4)).setText(
getArguments().getString(桌面));
((TextView)rootView.findviewbyd(R.id.item_label5)).setText(
getArguments().getString(单位));
((TextView)rootView.findviewbyd(R.id.item_label6)).setText(
getArguments().getString(quan));
((TextView)rootView.findviewbyd(R.id.item_label1)).setText(
getArguments().getString(id));
((EditText)rootView.findViewById(R.id.editText2)).setText(
getArguments().getString(quan));
返回rootView;
}
}
}

将此方法放入片段中

 @Override
    public void setMenuVisibility(final boolean visible) {
        super.setMenuVisibility(visible);
        if (!visible) {

          // called when fragment will change

          // insertIntoTable this is a method for insert data into your sqlite table
          insertIntoTable(edittext.getText().toString());

        } 
    }

为在sqlite表中插入数据创建方法
insertIntoTable
,并将其放入sqlite查询中

下面是一个简单的示例。希望这对您有所帮助。
这是一个片段,具有获取edittext字符串的公共方法-

public class TestFragment extends Fragment {
Context mContext;
EditText etData;

public TestFragment() {
    mContext = getActivity();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_blank, container, false);
    etData = (EditText) view.findViewById(R.id.etData);
    return view;
}

public String getEditTextData(){
   return etData.getText().toString();
}
}

viewpager的适配器-

public class Adapter extends FragmentStatePagerAdapter {
SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();
public Adapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    return new TestFragment();
}

@Override
public int getCount() {
    //create two pages
    return 2;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    Fragment fragment = (Fragment) super.instantiateItem(container, position);
    registeredFragments.put(position, fragment);
    return fragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    registeredFragments.remove(position);
    super.destroyItem(container, position, object);
}

public Fragment getRegisteredFragment(int position) {
    return registeredFragments.get(position);
}

因此,逻辑是每次用户滑动viewpager时,我们都会从正在滑动的视图中获取edittext的数据,并将其插入数据库。现在,为了获取片段的edittext数据,我们借助适配器返回特定位置的片段实例。我测试过了,效果很好

您是否正在使用Viewpager实现此滑动功能?如果是,请参阅此更改侦听器。是的,我在使用viewpager,谢谢你的链接,但你能给我一个例子吗?但我还是会尝试阅读它,并尽快给你反馈:)这个链接可能会帮助你做例子。请执行此链接中提到的数据库操作,而不是网络操作。先生,我找不到我将在何处放置itok,然后在您的所有片段中放置setMenuVisibility方法。这将为您带来好处。我将在我的所有类中复制setMenuVisibility?是的,在您的所有片段类中,当您滑动您的片段类时,则会遇到此问题