将SQLITE数据放入两个不同片段中的两个ListView中



基本上,我想从两个不同的表(或列)中获取基于片段可见的数据。我已经找到了一个解决方案(棘手的解决方案),我想知道是否还有其他最佳方法可以达到相同的结果。我仅在一个片段上建立了很多教程。在我做的下面:

首先,在我的主动脉中,我有:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    toolbar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(),"Hai cliccato la barra",Toast.LENGTH_SHORT).show();
            fragment = new HomeFragment();
            if (fragment!=null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction ft = fragmentManager.beginTransaction();
                ft.replace(R.id.screen_area,fragment);
                ft.commit();
            }
        }
    });

,从导航视图中,我可以选择要看的片段:

public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
    }
    if (fragment!=null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.screen_area,fragment);
        ft.commit();
    }
    return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id= item.getItemId();
    switch(id){
        case R.id.carburante:
            fragment = new CarburanteFragment();
            break;
        case R.id.giorni:
            fragment = new GiorniFragment();
            break;

...之后,在我的化油器上,我将片段传递给dbadapter ...例如,在"保存"中:

private void save(String name)
    {
        DBAdapter db=new DBAdapter(getActivity(),((MainActivity) getActivity()).fragment= this);
        db.openDB();
        boolean saved=db.add(name);
        if(saved)
        {
            nameEditText.setText("");
            this.getSpacecrafts();
        }else {
            Toast.makeText(getContext(),"Unable To Save",Toast.LENGTH_SHORT).show();
        }
    }

...终于在dbadapter类中我可以得到我要填充listView的片段。.../p>

 public DBAdapter(Context c,Fragment fr) {
    this.c = c;
    helper = new DBHelper(c);

  Fragment currentFragment =fr;
           if(currentFragment.getTag()=="carburante")
             Toast.makeText(c, currentFragment.toString(), Toast.LENGTH_LONG).show();

}

您可以做的是您可以在更换片段时传递标志,以后可以用来识别要加载的数据。

for fragment1

Fragment1 frag = new Fragment1();
Bundle bundle = new Bundle ();
bundle.put("MY_FLAG", 1);
frag.setArgument(bundle);

for fragment2

Fragment2 frag = new Fragment2();
Bundle bundle = new Bundle ();
bundle.put("MY_FLAG", 2);
frag.setArgument(bundle);

然后,您可以使用标志中的数据来识别要加载的数据类型。

最新更新