В настоящее время я пытаюсь использовать библиотеку ButterKnife для Android для обработки некоторого шаблонного кода (https://github.com/JakeWharton/butterknife)
Я настроил его, и он работает наполовину, но я столкнулся с проблемой, которую не могу решить :/
У меня есть фрагмент, который содержит 1 элемент ListView, и к этому ListView я прикрепляю представление нижнего колонтитула, содержащее несколько элементов.
Это фрагмент кода из моего фрагмента с использованием библиотеки:
public class UsersFragment extends Fragment {
@InjectView(R.id.users_listview_id) AutoUpdatingListView list;
private View footerView;
@InjectView(R.id.add_user_footer_firstname_edittext_id) BootstrapEditText firstnameEditText;
@InjectView(R.id.add_user_footer_middlename_edittext_id) BootstrapEditText middlenameEditText;
@InjectView(R.id.add_user_footer_lastname_edittext_id) BootstrapEditText lastnameEditText;
@InjectView(R.id.add_user_footer_cancel_button_id) BootstrapButton cancelButton;
@InjectView(R.id.add_user_footer_okay_button_id) BootstrapButton okayButton;
@InjectView(R.id.add_user_footer_facebook_button) BootstrapCircleThumbnail facebookButton;
@InjectView(R.id.add_user_footer_google_plus_button) BootstrapCircleThumbnail googlePlusButton;
@InjectView(R.id.add_user_footer_twitter_button) BootstrapCircleThumbnail twitterButton;
@InjectView(R.id.add_user_footer_linkedin_button) BootstrapCircleThumbnail linkedInButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.user_fragment, container, false);
footerView = ((LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.add_user_footer_view, null, false);
ButterKnife.inject(this, rootView);
list.setAdapter(adapter);
}
}
Приведенный выше код НЕ работает, так как я могу вводить только 1 представление, и если я попытаюсь использовать оба из них (2x вставки), вторая вставка переопределит первую, оставив мне нулевые значения.
Кажется, я не могу указать, какое представление содержит какие элементы, как я могу с помощью обычного findViewById().
Чтобы уточнить, это мой код без ButterKnife (который работает на 100%):
list = (AutoUpdatingListView) rootView.findViewById(R.id.users_listview_id);
firstnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_firstname_edittext_id);
middlenameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_middlename_edittext_id);
lastnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_lastname_edittext_id);
Как вы можете видеть выше, я могу указать либо «rootView», либо «footerView» в качестве цели findViewById.
Кто-нибудь может помочь с этим вопросом? Так как это сводит меня с ума в данный момент..