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);
}
}
'shrinkShowText'를'toShrinkOrNotToShrinkText'로 바꿉니다. :) 그리고 물론 새로운 이름을 반영하기 위해'else' stament를 추가하십시오 ... – Selvin
@Selvin 내 대답은 다음과 같습니다 :) –