#android #android-fragments #slider #fragment
#Android #android-фрагменты #слайдер #фрагмент
Вопрос:
Я разрабатываю приложение, в котором используется таблица, внутри которой отображаются 4 вкладки, которые являются фрагментом.На одной из моих вкладок я использую панель слайдов, в которой я показываю список из 4 вариантов, и теперь я застрял в его событии щелчка. я хочу открыть новый макет по щелчку listview.Много искал, но не получил ни одного кода, связанного с фрагментами. Пожалуйста, помогите мне.Спасибо за вашу помощь
NewChattFragment:
public class NewChatFragment extends Fragment
{
private DrawerLayout drawerLayout;
private View drawerView;
private ListView listView1;
private ArrayList<drawer> arrayProvider;
private drawerAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@SuppressLint("NewApi") @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.newchatfragment_layout, container, false);
arrayProvider = new ArrayList<drawer>();
arrayProvider.add(new drawer("1-to-1"));
arrayProvider.add(new drawer("Group"));
arrayProvider.add(new drawer("Video Call"));
arrayProvider.add(new drawer("Broadcast"));
arrayProvider.add(new drawer("Blink"));
listView1 = (ListView) v.findViewById(R.id.left_drawer);
adapter = new drawerAdapter(getActivity(), arrayProvider);
listView1.setAdapter(adapter);
drawerLayout = (DrawerLayout) v.findViewById(R.id.drawer_layout);
drawerView = (View)v.findViewById(R.id.drawer);
drawerLayout.openDrawer(drawerView);
return v;
}
}
Ответ №1:
Пожалуйста, обратитесь к этому классу для создания списка навигации и получения его списка, надеюсь, это будет вам полезно,
public class NavigationListFragment extends ListFragment {
private static final String TAG = NavigationListFragment.class.getName();
MenuAdapter menuAdapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.navigation_list, null);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
menuAdapter = new MenuAdapter(getActivity());
menuAdapter.add(new MenuItem("1-to-1", R.drawable.search_icon_select));
menuAdapter.add(new MenuItem("Group", R.drawable.cuse_icon));
menuAdapter.add(new MenuItem("Video Call", R.drawable.cart_icon));
menuAdapter.add(new MenuItem("Broadcast", R.drawable.post_icon));
menuAdapter.add(new MenuItem("Blink", R.drawable.settting_icon));
getListView()
.setDivider(new ColorDrawable(Color.parseColor("#FFFFFF")));
getListView().setDividerHeight(1);
setListAdapter(menuAdapter);
}
private class MenuItem {
public String tag;
public int iconRes;
public MenuItem(String tag, int iconRes) {
this.tag = tag;
this.iconRes = iconRes;
}
}
public class MenuAdapter extends ArrayAdapter<MenuItem> {
public MenuAdapter(Context context) {
super(context, 0);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.cell_navigation, null);
}
ImageView icon = (ImageView) convertView
.findViewById(R.id.row_icon);
icon.setImageResource(getItem(position).iconRes);
TextView title = (TextView) convertView
.findViewById(R.id.row_title);
title.setText(getItem(position).tag);
return convertView;
}
}
@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
switch (position) {
case 0:
//click event for 1-to-1
break;
case 1:
//click event for Group
break;
case 2:
//click event for Video Call
break;
case 3:
//click event for Broadcast
break;
case 4:
//click event for Blink
break;
}
}
}
Комментарии:
1. я использую Fragmentactivity, внутри которого я использую эти 4 вкладки, которые являются фрагментами. если я использую ListFragment, он выполняет приведение nt правильно.
2. идея состоит в том, чтобы использовать пользовательский адаптер так, как в моем коде, а не в классе.