2014-11-06 49 views
1

我有一個關於listview的問題。每個listview項都有一個imageview和一個textview。我爲Listview適配器擴展了BaseAdapter類,並且重寫了一些我必須覆蓋的方法。順便說一下,如果大於25,我想在textview中縮小文本的大小。爲此,我創建了一個名爲「shrinkText()」的方法。當我第一次執行應用程序時,此方法正常工作。因此,文本大小超過25的文本視圖已縮小,其他文本視圖保持其大小。但是,當我查看列表視圖時,文本查看文本大小小於25的文本也被縮小了。我應該怎麼做才能解決這個問題?由於該方法在listview中應用了錯誤的元素

我的ListView適配器...

public class ListAdapter extends BaseAdapter{ 


     private final ProgramInfo values; 
     private LayoutInflater mInflater; 

     public ListAdapter(Context context, ProgramInfo values) { 

     this.values = values; 
     mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     @Override 
     public int getCount(){ 

      return values.getSize(); 
    } 
     @Override 
     public Object getItem(int position) { 

     return null; 
    } 

     @Override 
     public long getItemId(int position) { 

     return 0; 
    } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder viewHolder; 

      if (convertView == null) { 

       convertView = mInflater.inflate(R.layout.brd_stream_list_item,parent,false); 

       viewHolder = new ViewHolder(); 

       viewHolder.p_Name = (TextView)convertView.findViewById(R.id.prgName); 
       viewHolder.p_Image = (ImageView)convertView.findViewById(R.id.prgImage); 

       convertView.setTag(viewHolder); 

      }else{ 

       viewHolder = (ViewHolder) convertView.getTag(); 
      } 

      viewHolder.p_Name.setText(values.programNames.get(position)); 
      viewHolder.p_Image.setImageResource(R.drawable.alarm_clock_ed); 


      CharSequence text = viewHolder.p_Name.getText(); 
      shrinkText(text,viewHolder.p_Name); //Call for shrink 

     } 

我shrinkText()方法..

private void shrinkText(CharSequence text, TextView v){ 

if(text.length()>25){ 

    v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11); 

    } 
} 
+1

重命名'shrinkText'爲'toShrinkOrNotToShrinkText' :) ....當然加上'else' stament來反映它的新名字... – Selvin 2014-11-06 16:27:00

+0

@Selvin我在評論中的回答:) – 2014-11-06 16:30:36

回答

0

您需要添加else語句:

private void shrinkText(CharSequence text, TextView v){ 

if(text.length()>25){ 

    v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11); 

    } 
else { 
    v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25); //the default text size 
} 
} 

一個小竅門:爲避免bug,請務必在getView中使用if-else聲明(不僅是if)。

+0

我添加了else語句和它正常工作謝謝你:) – Andev 2014-11-06 16:57:12

相關問題