如何在Android中使用getItemAtPosition获取项目引用?
我正在使用Android Studio IDE提供的默认导航抽屉与默认列表项目,并且我想从列表中查看我的项目View,我试过这样做TextView txt = (TextView) mDrawerListView.getItemAtPosition(3);
,但应用程序在午餐中崩溃。我想知道什么是错误,以及是否有其他解决方案。如何在Android中使用getItemAtPosition获取项目引用?
我的适配器:
mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1,
new String[] {
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
getString(R.string.title_section4),
getString(R.string.title_section5),
getString(R.string.title_section6)}) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
// textView.setTextColor(getResources().getColor(R.color.dark_grey));
//To Set the icones
Drawable image = getResources().getDrawable(R.drawable.spots);
Drawable image2 = getResources().getDrawable(R.drawable.sessions);
TextView txt = (TextView) mDrawerListView.getItemAtPosition(3);
txt.setCompoundDrawablesWithIntrinsicBounds(image2, null, null, null);
return textView;
}
});
感谢
更新:它是正确的吗?
mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1,
new Info[] {
new Info(getString(R.string.title_section1), getResources().getDrawable(R.drawable.spots)),
new Info(getString(R.string.title_section2), getResources().getDrawable(R.drawable.sessions)),
new Info(getString(R.string.title_section3), getResources().getDrawable(R.drawable.calendar)),
new Info(getString(R.string.title_section4), getResources().getDrawable(R.drawable.clubs_pages)),
new Info(getString(R.string.title_section5), getResources().getDrawable(R.drawable.cv)),
new Info(getString(R.string.title_section6), getResources().getDrawable(R.drawable.cv_life))
}
而不是有一个ArrayAdapter,如果您想自定义文本和图标为ListView的每一个孩子,我宁愿用一个bean对象,称为Info
,例如,包含这些信息 (ArrayAdapter<Info>
)。例如
class Info {
String mText;
Drawable mDrawable;
public Info(String text, Drawable dra) {
mText = text;
mDrawable = dra;
}
}
和适配器:
new ArrayAdapter<Info>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1,
new Info[] {
new Info(getString(R.string.title_section1), getResources().getDrawable(R.drawable.first_drawable),
// other elements
和getView
TextView textView = (TextView) super.getView(position, convertView, parent);
Info info = (Info) getItem(position);
textView.setText(info.mText);
textView.setCompoundDrawablesWithIntrinsicBounds(info.mDrawable, null, null, null);
请检查是否有错字
我会试试这个谢谢! – 2014-09-22 08:33:32
你能看到我在问题的主体中添加了什么吗? – 2014-09-22 08:49:37
'new ArrayAdapter
'getItemAtPosition'在返回该位置的数据集的元素。将其转换为TextView将使您的应用程序崩溃,并带有'ClassCastException'。 – Blackbelt 2014-09-22 08:03:49
好的,我怎样才能得到这个元素的文本? – 2014-09-22 08:07:38
'String fourthString =(String)getItem(3)' – Blackbelt 2014-09-22 08:09:00