현재 제가 MainActivity에 editText와 Tab이 있는데요...
Tab구현을 MainActivity에서 TabAdapter를 이용해서
tap position에따라 Fragment1,Fagment2 를 생성하게 되어있습니다......
Fragment에서는 이미지와 텍스트가 있는 커스텀 리스트뷰를 구현했는데
이때 선택한 리스트 데이터를 MainActivity에서 가져와서
리스트 데이터 중 텍스트를 editText에 설정하려 했습니다....
보통 Fragment 에서 Activity로 데이터를 전달할 때 리스너를 이용하면 된다해서 만들긴했는데
제가지금 Activity -> TabAdapter -> Fragment 이런식으로 중간에 어댑터가 껴있어서
어떻게 해야할지 모르겠어요....
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Button button = (Button)findViewById(R.id.insertButton);
editText1 = (EditText)findViewById(R.id.editText1);
editText2 = (EditText)findViewById(R.id.editText2);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("검색기록"));
tabLayout.addTab(tabLayout.newTab().setText("즐겨찾기"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final MyTabAdapter adapter = new MyTabAdapter(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) {}
});
// Set click Listener
button.setOnClickListener(this);
}
MyTabAdapter.java
public class MyTabAdapter extends FragmentStatePagerAdapter {
int _numOfTabs;
public MyTabAdapter(FragmentManager fm, int numOfTabs) {
super(fm);
this._numOfTabs = numOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
MyTabFragment1 tab1 = new MyTabFragment1();
return tab1;
case 1:
MyTabFragment2 tab2 = new MyTabFragment2();
return tab2;
default:
return null;
}
}
@Override
public int getCount() {
return _numOfTabs;
}
}
MyTabFragment1
ublic class MyTabFragment1 extends Fragment {
private ListView mListView;
private MyItem selectItem;
private MyTabListener tabListener;
public MyTabFragment1() {
super();
}
public void setTabListener(MyTabListener tabListener){
this.tabListener = tabListener;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_tab1, container, false);
mListView = (ListView) view.findViewById(R.id.listView1);
final MyListAdapter myListAdapter;
myListAdapter = new MyListAdapter();
ArrayList<String> myArrayList = new ArrayList<>();
myArrayList.add("최근기록 1");
myArrayList.add("최근기록 2");
myArrayList.add("최근기록 3");
for (int i = 0; i < 3; i++) {
myListAdapter.addItem(myArrayList.get(i));
}
myListAdapter.selectItem(-1);
mListView.setAdapter(myListAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// mMyAdapter.selectItem(position);
selectItem = myListAdapter.getItem(position);
tabListener.onListClicked(selectItem);
}
});
return view;
}
}