我对listview有疑问。列表视图的每个项目都有一个imageview和一个textview。我为Listview适配器扩展了BaseAdapter类,并覆盖了一些我必须覆盖的方法。顺便说一下,如果大于25,我想缩小textview中文本的大小。为此,我创建了一个名为“shrinkText()”的方法。当我第一次执行应用程序时,此方法可以正常工作。因此,文本视图大小超过25的文本视图已缩小,其他文本视图保持其大小。但是,当我在列表视图中删除时,文本视图的文本大小小于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);
}
}
答案 0 :(得分: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
}
}
提示:为避免错误,请始终在if-else
中使用getView
语句(不仅仅是if
)。