-1

Я использую меню ящика навигации, в котором вид списка завышен. В основном я использую встроенный ящик для навигации, снабженный Eclipse.Android: Изменение цвета текста в виде списка

следующий фрагмент кода отображает представление списка.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    mDrawerListView = (ListView) inflater.inflate(
      R.layout.fragment_navigation_drawer, container, false); 
    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selectItem(position); 
     } 
    }); 
    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)})); 
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); 
    return mDrawerListView; 
    } 

Я хочу изменить цвет текста элементов списка. Теперь я попытался создать отдельный XML-файл, а затем даже попробовал его с адаптером, заменив «android.R.id.text1» на «R.layout.my_layout» или «R.id.mytext_id», но изменение не было. Предложения приветствуются.

+0

Я бы, вероятно, пошел с созданием пользовательского адаптера (подклассификация ArrayAdapter или BaseAdapter) и обработки переключения цвета текста в методе getView. – ariets

+0

Вы пробовали 'textview.setTextColor (Color.RED);' или 'textview.setTextColor (Color.argb (0,200,0,0));' –

+0

@SagarP я не могу этого сделать. Я не использую отдельную переменную textview здесь – user3794646

ответ

0

Как я уже сказал в комментарии выше, опция обработки этого объекта - это подкласс ArrayAdapter или BaseAdapter. Ниже приведен пример (я выбрал подкласс BaseAdapter):

static class ViewHolder { 
    TextView tv; 
} 
private class CustomAdapter extends BaseAdapter{ 

    private ArrayList<String> items; 
    private Context context; 

    private int selectedPosition; 

    public CustomAdapter(Context context, ArrayList<String> items){ 
     this.items = items; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return items != null ? items.size() : 0; 
    } 

    @Override 
    public Object getItem(int i) { 
     return items != null ? items.get(i) : null; 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup container) { 
     ViewHolder holder = null; 
     if(convertView == null){ 
      // You should create your own custom layout for the listview cell. 
      convertView = LayoutInflater.from(context).inflate(R.layout.your_custom_row_layout); 
      holder = new ViewHolder(); 
      holder.tv = convertView.findViewById(R.id.your_textview); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     String item = items.get(position); 

     if(position == selectedPosition){ 
      // Here you set the selected text color 
      holder.tv.setTextColor(Color.RED); 
     }else{ 
      holder.tv.setTextColor(Color.BLACK); 
     } 

     return convertView; 
    } 
} 

Тогда в вашей деятельности, вы создаете экземпляр вашего CustomAdapter и установить его на ListView.

Смежные вопросы