2014-02-24 40 views
0

我在這裏要做的是有一個按鈕來添加一個新的條目到我的自定義listView,就像添加到卡概念。添加一個新的條目到ArrayAdapter

但是,一切工作正常,只是當我點擊按鈕只有一個條目被添加,而當我第二次點擊它沒有任何改變。

我的片段

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); 

} 

} 

這是懶適配器

公共類GroupPortLazyAdapter延伸ArrayAdapter { 私人INT []顏色=新INT [] {0x30bebebe,0x30FFFFFF};

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; 
} 

}

+0

你用代碼填充視圖的代碼顯然是錯誤的。 'holder'變量應該在'getView()'內聲明,並且如果使用'convertView!= null',則應該初始化。 – flx

+0

我編輯了我的代碼,但仍然沒有機會, –

回答

0

您是否嘗試過使用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中,導致問題。感謝您的答案.. –