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;
    }

私のセットアップでは、1 つまたは別のテキスト ビューしか実行できないようです。方法があると確信しています。お早めにどうぞ!

4

3 に答える 3

3

2つのアイテムを内蔵してお使いいただけます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 属性をカスタム作成のリソースに置き換えることもできます。

于 2013-07-09T19:17:38.127 に答える
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;
}
于 2013-07-09T19:32:27.613 に答える
0

プログラム用のカスタム アダプタを作成します。タイトル ビューとその下にテキスト ビューを追加するビューを使用します。

于 2013-07-09T17:44:27.107 に答える