2016-06-10 3 views
0

날씨 아이콘이 포함 된 ttf 파일이 있습니다. 이 글꼴을 사용하여 일별 온도 목록보기에서 날씨 아이콘을 만들고 싶습니다. 나는 그것을 잘 설정했고 listview에서도 아이콘을 얻었지만 8 개의 listview 항목 중 어느 곳에서도 아이콘을 얻지 못했습니다. 게다가 스크롤을 위아래로 스크롤하면 한 곳만 새로 고칠 수 있습니다. 모든 데이터를 설정하는 내 목록보기에 대한 getview 메서드를 게시하고 있습니다.TTF 글꼴 아이콘이 목록보기에서 작동하지 않습니다.

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

     ViewHolder holder; 

     if(convertView==null){ 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_whether_list_style, null); 
      holder = new ViewHolder(); 
      holder.description = (TextView) convertView.findViewById(R.id.description); 
      holder.weatherIcon = (TextView) convertView.findViewById(R.id.weather_iconT); 
      holder.maxTemp = (TextView) convertView.findViewById(R.id.max_temp); 
      holder.minTemp = (TextView) convertView.findViewById(R.id.min_temp); 
      holder.dayName = (TextView) convertView.findViewById(R.id.day); 
      convertView.setTag(holder); 
     } 

     else holder = (ViewHolder)convertView.getTag(); 

     Daily daily = dailyTest.get(position); 
     holder.description.setText(daily.getDescription()); 
     holder.dayName.setText(daily.getFormattedTime()); 

     Typeface typeface = Typeface.createFromAsset(getAssets(), "Weather&Time.ttf"); 
     holder.weatherIcon.setTypeface(typeface); 
     holder.weatherIcon.setText(daily.getWeatherIconString()); 


     //for two digit temp format.. adding 0 for single digits. 
     int maxtemp = (daily.getMaxTemp()-32)*5/9; 
     if(maxtemp<10){ 
      holder.maxTemp.setText("0"+ maxtemp); 
     } else holder.maxTemp.setText(""+ maxtemp); 

     int mintemp = (daily.getMinTemp()-32)*5/9; 
     if(mintemp<10) { 
      holder.minTemp.setText("0"+ mintemp); 

     } else holder.minTemp.setText(""+ mintemp); 


     return convertView; 
    } 
+0

글꼴이 fontello 또는 fontastic과 같은 "아이콘 글꼴"인 경우 올바른 유니 코드 문자를 참조해야합니다. –

+0

유니 코드가 정확하지만 문제는 8 개의 목록보기 항목 중 2 개에서만 렌더링된다는 것입니다. –

+0

Android N Dev-Preview를 사용합니까? –

답변

0

Viewholder 클래스 코드도 붙여 넣으십시오.

static Textview에 대해 언급 한 경우 정적 키워드를 제거하십시오.

또한 당신은 더 많은 정보를 원하시면

+0

뷰 소유자의 정적 필드가 없습니다. 의사는 비트 맵을 표시하기위한 것입니다. 여기 비트 맵을 렌더링하지 않습니다 .. 텍스트보기의 아이콘으로 변환 된 글꼴. –

0

당신은 글꼴을 createFromAsset createFromAsset에 컨텍스트를 전달하고이 코드를 시도하는 컨텍스트를 통과하지 않습니다에 대한 this을 참조 할 수 있습니다.

if(convertView==null){ 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_whether_list_style, null); 
      holder = new ViewHolder(); 
      holder.description = (TextView) convertView.findViewById(R.id.description); 
      holder.weatherIcon = (TextView) convertView.findViewById(R.id.weather_iconT); 
      holder.maxTemp = (TextView) convertView.findViewById(R.id.max_temp); 
      holder.minTemp = (TextView) convertView.findViewById(R.id.min_temp); 
      holder.dayName = (TextView) convertView.findViewById(R.id.day); 
      convertView.setTag(holder); 
     } 

     else holder = (ViewHolder)convertView.getTag(); 

     Daily daily = dailyTest.get(position); 
     holder.description.setText(daily.getDescription()); 
     holder.dayName.setText(daily.getFormattedTime()); 

     Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "Weather&Time.ttf"); 
     holder.weatherIcon.setTypeface(typeface); 
     holder.weatherIcon.setText(daily.getWeatherIconString()); 


     //for two digit temp format.. adding 0 for single digits. 
     int maxtemp = (daily.getMaxTemp()-32)*5/9; 
     if(maxtemp<10){ 
      holder.maxTemp.setText("0"+ maxtemp); 
     } else holder.maxTemp.setText(""+ maxtemp); 

     int mintemp = (daily.getMinTemp()-32)*5/9; 
     if(mintemp<10) { 
      holder.minTemp.setText("0"+ mintemp); 

     } else holder.minTemp.setText(""+ mintemp); 


     return convertView; 
    }