2

В каждой строке есть 2 текстовых вида, в основном название, а затем описание под ним. Как установить текст каждого вида в каждой строке?Умножение текстовых просмотров в виде списка

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mRoot = inflater.inflate(R.layout.frag_settings, container, false); 

     mItems = getResources().getStringArray(R.array.setting_items); 
     mItemDescription = getResources().getStringArray(R.array.setting_item_descriptions); 

     mItemListView = (ListView) mRoot.findViewById(R.id.lvMainListView); 

     ArrayAdapter<String> lvRowTitle = new ArrayAdapter<String>(getActivity(), 
       R.layout.setting_twolinetext_checkbox, R.id.tvRowTitle, 
       mItems); 

     mItemListView.setAdapter(lvRowTitle); 

     ArrayAdapter<String> lvRowDesc = new ArrayAdapter<String>(getActivity(), 
       R.layout.setting_twolinetext_checkbox, R.id.tvRowDesc, 
       mItemDescription); 

     mItemListView.setAdapter(lvRowDesc); 

     return mRoot; 
    } 

Кажется, я могу сделать только один текст с моей настройкой. Я уверен, что есть способ. Спасибо заранее!

ответ

0

Создайте пользовательский адаптер для своей программы ... с представлением, в котором вы будете добавлять заголовок и текстовое представление под ним.

3

Вы можете использовать встроенный в два элемента: ListView. Вот краткий пример:

List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 

Map<String, String> dataMap = new HashMap<String, String>(2); 
dataMap.put("Item1", item1Str); 
dataMap.put("Item2", item2Str); 
data.add(dataMap); 

dataMap = new HashMap<String, String>(2); 
dataMap.put("Item1", item1Str); 
dataMap.put("Item2", item2Str); 
data.add(dataMap); 

SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), 
              data, 
              android.R.layout.simple_list_item_2, 
              new String[] { "Item1", "Item2" }, 
              new int[] { android.R.id.text1, android.R.id.text2 }); 

listView.setAdapter(adapter); 

Или вы можете сделать свои собственные файлы компоновки ресурсов и заменить android.R атрибуты с пользовательскими из ресурсов.

+0

замечательно отвечайте! –

0

Так это выглядит, как у вас уже есть макет определен для элементов списка (R.layout.setting_twolinetext_checkbox), так что вы можете использовать собственный адаптер, как это:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    mRoot = inflater.inflate(R.layout.frag_settings, container, false); 

    mItems = getResources().getStringArray(R.array.setting_items); 
    mItemDescription = getResources().getStringArray(R.array.setting_item_descriptions); 

    mItemListView = (ListView) mRoot.findViewById(R.id.lvMainListView); 

    mItemListView.setAdapter(new ArrayAdapter(getActivity()) { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) 
       convertView = getActivity().getLayoutInflater().inflate(R.layout.setting_twolinetext_checkbox, null, false); 

      TextView tvRowTitle = (TextView) convertView.findViewById(R.id.tvRowTitle); 
      TextView tvRowDesc = (TextView) convertView.findViewById(R.id.tvRowDesc); 
      tvRowTitle.setText(mItems[position]); 
      tvRowDesc.setText(mItemDescription[position]); 

      return convertView; 
     } 

     @Override 
     public int getCount() { 
      return mItems.length; 
     } 
    }); 

    return mRoot; 
} 
+0

отредактировал: забыли добавить реализацию для 'getCount()' – invertigo

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