2014-11-06 1 views
1

listview에 대한 문제가 있습니다. listview의 각 항목에는 이미지보기와 텍스트보기가 있습니다. ListView 어댑터 용 BaseAdapter 클래스를 확장하고 재정의해야하는 일부 메서드를 재정의했습니다. 그런데 나는 25보다 큰 경우 textview의 텍스트 크기를 줄이려고합니다.이 이유 때문에 이름이 "shrinkText()"인 메서드를 만들었습니다. 처음 응용 프로그램을 실행할 때이 메서드는 올바르게 작동합니다. 텍스트 크기가 25보다 큰 textview는 축소되었으며 다른 textview는 크기를 유지합니다. 그러나 목록보기를 스크롤하면 텍스트 크기가 25 미만인 텍스트 뷰가 축소되었습니다. 이 문제를 해결하려면 어떻게해야합니까? 감사합니다메서드가 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

'shrinkShowText'를'toShrinkOrNotToShrinkText'로 바꿉니다. :) 그리고 물론 새로운 이름을 반영하기 위해'else' stament를 추가하십시오 ... – Selvin

+0

@Selvin 내 대답은 다음과 같습니다 :) –

답변

0

:

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

팁 : 버그를 피하기 위해 항상 에 if-else 성명을 사용하십시오 (뿐만 아니라 if).

+0

else statement and it 제대로 작동 감사합니다 :) – Andev

관련 문제