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

관련 문제