2014-09-22 18 views
1

我正在使用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)) 
         } 
+0

'getItemAtPosition'在返回该位置的数据集的元素。将其转换为TextView将使您的应用程序崩溃,并带有'ClassCastException'。 – Blackbelt 2014-09-22 08:03:49

+0

好的,我怎样才能得到这个元素的文本? – 2014-09-22 08:07:38

+0

'String fourthString =(String)getItem(3)' – Blackbelt 2014-09-22 08:09:00

回答

0

而不是有一个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); 

请检查是否有错字

+1

我会试试这个谢谢! – 2014-09-22 08:33:32

+0

你能看到我在问题的主体中添加了什么吗? – 2014-09-22 08:49:37

+0

'new ArrayAdapter '必须是新的'ArrayAdapter ' – Blackbelt 2014-09-22 08:50:14

相关问题