У меня есть фрагмент, содержащий listView. Фрагмент расширяет roboFragment. ListView имеет собственный адаптер, который устанавливает различные элементы пользовательского интерфейса в методе getView. Я хочу использовать @InjectView для получения элементов пользовательского интерфейса. Я понимаю, что для этого мне нужно также создать адаптер, используя guice, а не новый оператор. Вот что делает мой фрагмент:
@Inject
TweetsActivityAdapter tweetsAdapter;
Адаптер выглядит так:
public class TweetsActivityAdapter extends ArrayAdapter<ITweet> {
@InjectView(R.id.ivProfilePic)
ImageView ivProfilePic;
@InjectView(R.id.tvUserName)
TextView tvUserName;
@InjectView(R.id.tvTweet)
TextView tvTweet;
private final static String tag =
"Debug - com.codepath.upkar.twitterapp.TweetsActivityAdapter";
@Inject
public TweetsActivityAdapter(Context context, List<ITweet> tweets) {
super(context, 0, tweets);
}
Я читал, что мне нужно настроить guice и сказать ему, где взять ITweet. ITweet — это просто интерфейс для класса модели Tweet.
public interface ITweet {
public User getUser();
public void setUser(User user);
public String getBody();
public long getId();
public long getStrId();
public boolean isFavorited();
public boolean isRetweeted();
}
Как создать привязку к списку? В настоящее время я получаю сообщение об ошибке:
FATAL EXCEPTION: main
E/AndroidRuntime(18753): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.bindaas.twitterapp/com.bindaas.twitterapp.activities
.TwitterAppActivity}: com.google.inject.ConfigurationException:
Guice configuration errors:
E/AndroidRuntime(18753): 1) No implementation for
java.util.List<com.bindaas.twitterapp.models.ITweet> was bound.
Мой модуль выглядит следующим образом: открытый класс MyCustomModule реализует модуль {
@Override
public void configure(Binder binder) {
binder.bind(ITweet.class).to(Tweet.class);
}
}