navigationDrawer
의 listView
에는 항목 1, 항목 2 및 항목 3이 있습니다. item1
에는 두 개의 버튼 (활성화 및 비활성화)이 있습니다. 사용자가 item1
을 클릭 한 다음 레이아웃에서 해당 사용 단추를 클릭하면 navigationdrawer
의 목록보기에있는 다른 두 항목이 나타납니다. 그리고 사용자가 비활성화 버튼을 클릭하면 (item2 및 item3)이 나타나면 사라져야합니다.동일한 목록의 항목에서 실행 된 작업을 기반으로 목록보기 항목을 사용/사용 중지하는 방법보기
현재 에 머물렀고 item1 layout
에 글을 올렸는데 item1 레이아웃의 button listener
안에 무엇을 써야할지 모르겠습니다. 친절하게 임대해라.
이하는 내 시도이며,이 단계를 수행하는 데 도움과 안내가 필요합니다.
mainActivity :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initViews(R.layout.activity_main);
if (savedInstanceState == null) {
// on first time display view for first nav item
displaySelectionLayout(0);
}
}
private void displaySelectionLayout(int position) {
// TODO Auto-generated method stub
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Item1_Fragment();
break;
case 1:
fragment = new Item2_Fragment();
break;
case 2: fragment = new Item3_Fragment();
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
navDrawerListView.setItemChecked(position, true); // update selected item and title, then close the drawer
navDrawerListView.setSelection(position);
setTitle(navDrawerOptions[position]);
navDrawerLayout.closeDrawer(navDrawerListView);
} else {
Log.e(TAG, "Error in creating fragment"); // error in creating fragment
}
}
private void initViews(int activityMain) {
// TODO Auto-generated method stub
setContentView(R.layout.activity_main);
navDrawerLayout = (DrawerLayout) findViewById(R.id.navDrawerLayout);
navDrawerListView = (ListView) findViewById(R.id.navDrawerListView);
navDrawerOptions = getResources().getStringArray(R.array.nav_drawer_items);
navDrawerArrayList = new ArrayList<NavDrawerItemStructure>();
navDrawerArrayList.add(new NavDrawerItemStructure(navDrawerOptions[0], VISIBE));
navDrawerArrayList.add(new NavDrawerItemStructure(navDrawerOptions[1], VISIBE));
navDrawerArrayList.add(new NavDrawerItemStructure(navDrawerOptions[2], VISIBE));
adapter = new NavDrawerListAdapter(getApplicationContext(),navDrawerArrayList);
navDrawerListView.setAdapter(adapter);
navDrawerListView.setOnItemClickListener(new SlideMenuClickListener());
setUpNavDrawer();
}
private void setUpNavDrawer() {
// TODO Auto-generated method stub
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mTitle = mDrawerTitle = getTitle();
navDrawerToggle = new ActionBarDrawerToggle(this, navDrawerLayout,
R.drawable.ic_launcher, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
){
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // calling onPrepareOptionsMenu() to show action bar icons
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // calling onPrepareOptionsMenu() to hide action bar icons
}
};
navDrawerLayout.setDrawerListener(navDrawerToggle);
}
/**
* Slide menu item click listener
* */
class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// display view for selected nav drawer item
displaySelectionLayout(position);
}
}
/***
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = navDrawerLayout.isDrawerOpen(navDrawerListView);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (navDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
navDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
navDrawerToggle.onConfigurationChanged(newConfig);
}
}
가 item1_Fragement
public class Item1_Fragment extends Fragment{
private Button btn_enable;
private Button btn_disable;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.item1_layout, container, false);
btn_enable = (Button) rootView.findViewById(R.id.btn_enable);
btn_disable = (Button) rootView.findViewById(R.id.btn_disable);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onViewCreated(view, savedInstanceState);
btn_enable.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// how can i dispatch the action from item1 listener to the mainactivit??
}
});
}
}
NavDrawer A를 dapter 클래스 :
public class NavDrawerListAdapter extends BaseAdapter {
private Context context;
private ArrayList<NavDrawerItemStructure> itemsList;
public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItemStructure> itemsList) {
// TODO Auto-generated method stub
this.context = context;
this.itemsList = itemsList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.itemsList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return this.itemsList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater layoutinflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = layoutinflater.inflate(R.layout.list_view_item_design, null);
}
TextView tv = (TextView) convertView.findViewById(R.id.tv_itemTitle);
tv.setText(this.itemsList.get(position).getTitle());
if (!this.itemsList.get(position).getVisibility()) {
tv.setVisibility(View.GONE);
}
return convertView;
}
}
[this] (https://www.youtube.com/watch?v=8MIfSxgsHIs)를 확인하십시오. – Skynet