2016-07-18 4 views
0

私はTabLayoutを2つのフラグメントでアンドロイドに実装しました。一つの断片に私はListViewを加えました。私はListViewを埋めるためにサーバーからデータを取得しています。 MainActivityクラスからListViewにアクセスしようとするまで、すべてうまくいきました。アンドロイドタブレイアウトのリストビュー

データをロードするためにTabLayoutを作成したMainActivityと同じリストビュー(フラグメント内にあります)にアクセスする必要があります。フラグメントは、タブレイアウトのタブ用に作成されます。

以下のコードを追加しました。

MainActivityからどのようにアクセスできますかListViewMainActivity.java親切

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_detailed_report); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 



    final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.mipmap.ic_launcher)); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.mipmap.ic_launcher)); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setVisibility(View.INVISIBLE); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 

     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

ReportListFragment.java

public class ReportListFragment extends Fragment{ 



private SimpleDateFormat mFormatter = new SimpleDateFormat("MMMM dd yyyy hh:mm aa"); 
Date newDate; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_item_list, container, false); 
    finder_sharedprefs = getActivity().getSharedPreferences(FINDERPREFERENCES, Context.MODE_PRIVATE); 

    listView=(ListView) view.findViewById(R.id.list); 
    reportLayout = (RelativeLayout) view.findViewById(R.id.new_report); 




     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 


    } 


    return view; 
} 

}

+0

フラグメントを含むメインアクティビティにデータを送信しますか?正しい? –

+0

@RaguSwaminathanいいえ。フラグメントレイアウトでlistviewを追加しました。しかし、今私はアクティビティクラスからアクセスする必要があります。 – anuradha

+0

だから、このようなものが欲しい。あなたのアクティビティでいくつかのボタンをクリックすると、同じアクティビティでラップされているフラグメント内のリストビューに1行追加しますか?正しい> –

答えて

0

それはあなたを助けている場合、この答えをチェックし、あなたのそれぞれのフラグメントのコードで

を作成公開機能

フラグメントA.java 以下のような関数を作成します。あなたのmainActivity.javaコールで今

public void getData(int r) { 
     Log.e("data got from Activity", "" + r); // this is sample 
     //Do your updations to list view here. 
     } 

あなたは

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     new FragmentA().getData(34); 
     } 
    }); 

今すぐログの猫をチェックしたいところはどこでも以下のようなこの機能。番号34が印刷されています。 ご質問がある場合はお知らせください。

+0

は、あなたが@codehubを助けるならば、親切に答えを受け入れます。 –

+0

は私のコードをご覧ください。私の質問かもしれないあなたには明らかではありません。私は、フラグメントクラスからアクティビティクラスへのリストビューにアクセスしたいです。それは可能ですか?そうでなければ、私は別のものを試してみる。 – anuradha

+0

アクティビティのボタンをクリックすると、フラグメント内のリストビューを更新しますか?正しい? –