2017-03-03 5 views
0

Ich habe eine benutzerdefinierte Listenansicht mit Textansicht. Wenn auf die Textansicht geklickt wird, muss die Zeilenhöhe basierend auf dem verfügbaren Text erhöht werden. Zum Beispiel, wenn holder.asr_tv_Content wird die aktuelle Zeile gedrückt, wo er gedrückt wird, hat zusammen mit anderen Kontrollen HöheErweitern Textansicht Höhe in android benutzerdefinierte Listview

public class StudentRemarksAdapter extends BaseAdapter { 

     Context _Context = null; 
     ArrayList<String> _as_Day; 
     ArrayList<String> _as_Month; 
     ArrayList<String> _as_Year; 
     ArrayList<String> _as_Heading; 
     ArrayList<String> _as_Content; 
     ArrayList<String> _as_Values; 
     LayoutInflater inflater = null; 

     public StudentRemarksAdapter(Context a_Context, 
       ArrayList<String> as_Day, ArrayList<String> as_Month, 
       ArrayList<String> as_Year, ArrayList<String> as_Heading, 
       ArrayList<String> as_Content, ArrayList<String> as_Values) { 
      // TODO Auto-generated constructor stub 
      this._Context = a_Context; 

      this._as_Day = as_Day; 
      this._as_Month = as_Month; 
      this._as_Year = as_Year; 
      this._as_Heading = as_Heading; 
      this._as_Content = as_Content; 
      this._as_Values = as_Values; 
      inflater = (LayoutInflater) _Context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return _as_Day.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public class Holder { 
      RelativeLayout asr_rl_background; 
      TextView asr_tv_Day, asr_tv_Month, asr_tv_Year, asr_tv_Heading, 
        asr_tv_Content; 

     } 

     @Override 
     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      // TODO Auto-generated method stub 
      Holder holder = new Holder(); 
      if (convertView == null) { 
       holder = new Holder(); 

       convertView = inflater.inflate(R.layout.adapter_studentremarks, 
         null); 

       holder.asr_rl_background = (RelativeLayout) convertView 
         .findViewById(R.id.asr_rl_background); 

       holder.asr_tv_Day = (TextView) convertView 
         .findViewById(R.id.asr_tv_Day); 
       setControlsStyle 
         .SetCustomTextViewStyleForContent(holder.asr_tv_Day); 

       holder.asr_tv_Month = (TextView) convertView 
         .findViewById(R.id.asr_tv_Month); 
       setControlsStyle 
         .SetCustomTextViewStyleForContent(holder.asr_tv_Month); 

       holder.asr_tv_Year = (TextView) convertView 
         .findViewById(R.id.asr_tv_Year); 
       setControlsStyle 
         .SetCustomTextViewStyleForContent(holder.asr_tv_Year); 

       holder.asr_tv_Heading = (TextView) convertView 
         .findViewById(R.id.asr_tv_Heading); 
       setControlsStyle 
         .SetCustomTextViewStyleForContentWithBlackText(holder.asr_tv_Heading); 

       holder.asr_tv_Heading.setTextSize(18); 
       holder.asr_tv_Heading.setGravity(Gravity.CENTER | Gravity.LEFT); 

       holder.asr_tv_Content = (TextView) convertView 
         .findViewById(R.id.asr_tv_Content); 
       setControlsStyle 
         .SetCustomTextViewStyleForContentWithBlackText(holder.asr_tv_Content); 
       holder.asr_tv_Month.setTextSize(14); 
       holder.asr_tv_Year.setTextSize(14); 

       holder.asr_tv_Content.setGravity(Gravity.TOP | Gravity.LEFT); 
       convertView.setTag(holder); 
      } 

      else { 
       holder = (Holder) convertView.getTag(); 
      } 

      holder.asr_tv_Day.setText(_as_Day.get(position)); 
      holder.asr_tv_Day.setTextSize(26); 

      holder.asr_tv_Month.setText(_as_Month.get(position)); 

      holder.asr_tv_Year.setText(_as_Year.get(position)); 

      holder.asr_tv_Heading.setText(_as_Heading.get(position)); 
      holder.asr_tv_Content.setText(_as_Content.get(position)); 



      if (_as_Values.get(position).equals(
        _Context.getResources() 
          .getStringArray(R.array.as_mode_Text)[0])) { 
       holder.asr_rl_background.setBackgroundColor(_Context 
         .getResources().getColor(
           R.color.asr_tv_positiveicon_bgcolor)); 
      } else { 
       holder.asr_rl_background.setBackgroundColor(_Context 
         .getResources().getColor(
           R.color.asr_tv_negativeicon_bgcolor)); 
      } 

      return convertView; 
     } 
    } 
+0

Warum sind nicht all diese verschwenderischen Listen stattdessen eine einzige 'ArrayList mRemarks;'. Vermeiden Sie auch, auf den Kontext zu hängen, es sei denn kritisch –

Antwort

0

Stellen die Sicht auf Höhe WRAP_CONTENT (und tut dasselbe für ihre Vorfahren)

Wenn erhöht Sie zeigen den Text standardmäßig zeigen einen kleinen Teil davon

private static final int MAX_LEN = 22; //choose this yourself 

if (text.length() > MAX_LEN) { 
    textView.setText(text.substring(0, MAX_LEN) + "..."); 
} else { 
    textView.setText(text); 
} 

Dann onClick, aktualisieren Sie wieder mit dem vollen Wert

textView.setText(text); 
+0

Hallo, Vielen Dank für Ihre Antwort. – user3211432

+0

So ändern Sie nur die aktuell gedrückte Zeile. – user3211432

+0

das * würde * nur die aktuelle Zeile ändern –

Verwandte Themen