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?是的,在您的所有片段类中,当您滑动您的片段类时,则会遇到此问题