2014-02-24 5 views
0

내가하려는 것은 카드 개념에 추가하는 것과 같은 사용자 정의 listView에 새 항목을 추가하는 버튼을 갖는 것입니다.ArrayAdapter에 새로운 항목을 추가하십시오.

그러나 모든 것이 정상적으로 작동합니다. 버튼을 클릭하면 하나의 항목 만 추가되고 두 ​​번째로 클릭하면 아무 것도 변경되지 않습니다.

공용 클래스 GroupPortLazyAdapter는 ArrayAdapter와 { 개인 INT [] 색상 = 새로운 INT [] {0x30bebebe, 0x30FFFFFF} 확장 게으른 어댑터입니다

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    rootView=inflater.inflate(R.layout.fragment_port_group, container,false); 
    injectViews(); 
    mGroupPortAdapter=new GroupPortLazyAdapter(getActivity()); 
    addToList.setOnClickListener(new OnAddToListClickLinsten()); 
    return rootView; 
} 


public class OnAddToListClickLinsten implements OnClickListener{ 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    mGroupPortAdapter.add(new GroupPortInModel("23424",12321324,"0177889062")); 
    portGroupListView.setAdapter(mGroupPortAdapter); 

} 

} 

내 조각;를

+0

'holder'로보기를 채우는 코드는 분명히 잘못되었습니다. 'holderView' 변수는'getView()'내부에서 선언되어야하고'convertView! = null' 인 경우에도 초기화되어야합니다. – flx

+0

내 코드를 편집했지만 아직 기회가 없습니다. –

답변

0

public GroupPortLazyAdapter(Context context) { 
    super(context, -1); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup arg2) { 
    ViewHolder holder; 


    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(
       R.layout.port_group_custom_list_view, null); 
     holder = new ViewHolder(); 
     holder.acountId = (TextView) convertView 
       .findViewById(R.id.port_account_id); 
     holder.serialNo = (TextView) convertView 
       .findViewById(R.id.port_serial_no); 
     holder.phoneNumber = (TextView) convertView 
       .findViewById(R.id.port_phone_number); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.acountId.setText(getItem(position).getAcountId()); 
    holder.serialNo 
      .setText(String.valueOf(getItem(position).getSerialNo())); 
    holder.phoneNumber.setText(getItem(position).getPhone()); 
    int colorPos = position % colors.length; 
    convertView.setBackgroundColor(colors[colorPos]); 
    return convertView; 
} 

static class ViewHolder { 
    TextView acountId; 
    TextView serialNo; 
    TextView phoneNumber; 
    int position; 
} 

는} 당신이 mGroupPortAdapter.notifyDatasetChanged() 대신 portGroupListView.setAdapter(mGroupPortAdapter)를 사용하여 시도 적이 있습니까?

또한 사용자의 getView()으로 사용해보십시오.

@Override 
public View getView(int position, View convertView, ViewGroup arg2) { 
    GroupPortInModel item = getItem(position); 

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(
       R.layout.port_group_custom_list_view, null); 
    } 

    ((TextView) convertView.findViewById(R.id.port_account_id)) 
     .setText(item.getAcountId()); 
    ((TextView) convertView.findViewById(R.id.port_serial_no)) 
     .setText(item.getSerialNo()); 
    ((TextView) convertView.findViewById(R.id.port_phone_number)) 
     .setText(item.getPhone()); 

    int colorPos = position % colors.length; 
    convertView.setBackgroundColor(colors[colorPos]); 

    return convertView; 
} 
+0

예 .. 내 getCount()가 여전히 목록보기의 데이터가 증가하지 않았지만 .. –

+0

getView를 사용해 보았습니다. – Menno

+0

고마워, 내 친구 둘 다 당신이 지적한 정확한지, 아직 나는 오류가 무엇인지 알아 냈어, 내 listView는 문제를 일으키는 scrollView에 중첩되어있다. 답변 해 주셔서 감사합니다. –

관련 문제