2012-11-27 21 views
13

मुझे लगता है कि TwoLineListItem क्या यह करने के लिए विकल्प नहीं है अगर मैं एक ListActivity एडाप्टर की स्थापना कर रहा हूँ के रूप में इस ?:ListActivity TwoLineListItem वैकल्पिक

ArrayAdapter<File> adapter = new ArrayAdapter<File>(this,android.R.layout.simple_list_item_2,filesArrayList){ 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent){ 
       final TwoLineListItem row; 
       if(convertView == null){ 
        LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        row = (TwoLineListItem)inflater.inflate(android.R.layout.simple_list_item_2, null); 
       }else{ 
        row = (TwoLineListItem)convertView; 
       } 
       row.getText1().setText(filesArrayList.get(position).getTitle()); 
       row.getText2().setText2(filesArrayList.get(position).getDescription()); 
       return row; 
      } 

     }; 
+0

आप अपनी खुद की 'View' दो पाठ' View's उस में उचित स्टाइल के साथ है लिख सकते हैं: बस अगर आप एक मोड चयन का उपयोग कर रहे हैं, जैसे चयनित राज्य प्रतिक्रिया करने के लिए कुछ पृष्ठभूमि जोड़ें। – prprcupofcoffee

उत्तर

15

सीधे शब्दों में कटौती करने और TwoLineListItem स्रोत कोड पेस्ट एपीआई 17 के रूप में हटा दिया गया है नोटिस अपना खुद का लेआउट में:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView android:id="@+id/text1" 
     android:textSize="16sp" 
     android:textStyle="bold" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/text2" 
     android:textSize="16sp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 

(सूचना मैं स्थिरता के लिए आईडी बदल दिया है।)

अब एक ViewHolder कि दोनों TextV के लिए संदर्भ रखता का उपयोग iews:

public View getView(int position, View convertView, ViewGroup parent){ 
    ViewHolder holder; 
    if(convertView == null){ 
     // You should fetch the LayoutInflater once in your constructor 
     LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.list_item_2, null); 

     // Initialize ViewHolder here 
    }else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    File file = filesArrayList.get(position); 
    holder.text1.setText(file.getTitle()); 
    holder.text2.setText2(file.getDescription()); 
    return convertView; 
} 
+0

यह ऐरे एडाप्टर के साथ उपयोग किए जाने पर काम नहीं करता है। – SagunKho

6

इस तरह मैंने किया है:

mAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_2, mListItems) 
    { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      View row; 
      if(convertView == null) 
      { 
       row = (View)mInflater.inflate(android.R.layout.simple_list_item_2, parent, null); 
      } 
      else 
      { 
       row = (View)convertView; 
      } 
      TextView v = (TextView) row.findViewById(android.R.id.text1); 
      v.setText(mListItems[position]); 
      v = (TextView) row.findViewById(android.R.id.text2); 
      v.setText(mListSubItems[position]); 
      return row; 
     } 
    }; 
ListView lv = (ListView) getActivity().findViewById(R.id.runsListView); 
    lv.setAdapter(mAdapter); 
    lv.setOnItemClickListener(mMessageClickedHandler); 
0

पहले, हटाई गई है, ताकि आप के लिए बहुत बुरा नहीं है। क्योंकि यह हमेशा के लिए समर्थित होगा। ;)

If it ain’t broke, don’t fix it.

आप किसी भी लेआउट का उपयोग करने के लिए स्वतंत्र हैं!

android:background="?android:attr/activatedBackgroundIndicator" 
+2

बहिष्कार यह कहना है कि कुछ का उपयोग नहीं किया जाना चाहिए, और भविष्य में उम्मीद के अनुसार काम नहीं कर सकता है। तो अगर आपको पता है तो जोखिम क्यों लें? –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^