사용자가 아닌 사용자의 입력을 받아서 listview와 관련하여 일부 수정 프로그램 이름, 전화 번호 등을 입력하는 응용 프로그램이 있습니다. 나는 모든 listview를 최적화하기 위해 viewholder를 사용했다. 모든 listviews는 userdata를로드하는 listview를 제외하고는 잘 동작합니다. 첫 번째와 마지막 행이 그러나로드 된 가운데 두 행이로드되지 않고로드하는 데 시간이 많이 걸릴 않는 것을 볼 수있다 그림에서 Viewholder가 Listview를로드하는 데 너무 많은 시간이 걸림
. 모든 행에 피드하는 정보는 처음에는 동일하며 사용자가 수정할 수 있도록 남아 있습니다. 여기에 내가 사용하는 코드가 있습니다.public View getView(final int position, View convertView,final ViewGroup parent)
{
View rowview = convertView;
if(rowview == null)
{
ViewHolder viewholder = new ViewHolder();
final LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowview = inflater.inflate(R.layout.list_skeleton_people_expenses, parent, false);
viewholder.tv1 = (TextView)rowview.findViewById(R.id.name);
viewholder.tv2 = (TextView)rowview.findViewById(R.id.destination);
viewholder.tv3 = (TextView)rowview.findViewById(R.id.start);
viewholder.tv4 = (TextView)rowview.findViewById(R.id.phno);
viewholder.rowview = rowview;
rowview.setTag(viewholder);
}
else
{
ViewHolder holder = (ViewHolder) rowview.getTag();
UserData temp = objects.get(position);
holder.tv1.setText(temp.name);
holder.tv2.setText("Destination: "+temp.loc);
holder.tv3.setText("Start: "+start);
String phone_txt = objects.get(position).phno;
phone_txt = "("+phone_txt.substring(0, 3)+") "+phone_txt.substring(3, 6)+"-"+phone_txt.substring(6, 10);
holder.tv4.setText(phone_txt);
}
return rowview;
}
static class ViewHolder
{
TextView tv1,tv2,tv3,tv4;
View rowview;
}
미리 감사드립니다.
죄송합니다 ... 코드를 여러 번 보았지만 단순한 실수를 인식하지 못했습니다. 코드와 조언을 주셔서 감사합니다. – daemon54