2015-05-11 2 views
0

Я использую BaseAdapter для заполнения элементов в ListView, но мой класс BaseAdapter показывает только один элемент ArrayList. например, я заполнить список массива с этим кодом:Android BaseAdapter dont loop для просмотра всех элементов массива

private static ArrayList<SubCategoriesList> category_items; 
... 

SubCategoriesList cList = new SubCategoriesList(); 
cList.id = 0; 
cList.users = "1"; 
cList.group_name = "Group one"; 
category_items.add(cList); 

SubCategoriesList cListA = new SubCategoriesList(); 
cListA.id = 1; 
cListA.users = "2"; 
cList.group_name = "Group two"; 
category_items.add(cListA); 

category_items.size() в этой фазе 2. и я ожидаю, что моя ListView есть 2 строки по этому коду:

adapter = new AdapterCategoriesList(G.context, category_items); 
uiFiller.lv_main_sub_category_list.setAdapter(adapter); 

AdapterCategoriesList адаптер:

public class AdapterCategoriesList extends BaseAdapter { 
    private LayoutInflater inflater; 
    private Context context; 
    private ArrayList<SubCategoriesList> categoryArrayList; 
    private Object mLock = new Object(); 

    public AdapterCategoriesList(ArrayList<SubCategoriesList> array) { 
     categoryArrayList = array; 
    } 

    public AdapterCategoriesList(Context context, ArrayList<SubCategoriesList> array) { 
     this.context = context; 
     inflater = LayoutInflater.from(this.context); 
     categoryArrayList = array; 
    } 

    @Override 
    public int getCount() { 
     return categoryArrayList.size(); 
    } 

    @Override 
    public SubCategoriesList getItem(int position) { 
     return categoryArrayList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder mViewHolder; 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.layout_main_categories_list_item, null); 
      mViewHolder = new ViewHolder(convertView); 
      convertView.setTag(mViewHolder); 
     } else { 
      mViewHolder = (ViewHolder) convertView.getTag(); 
     } 

     SubCategoriesList item = getItem(position); 
     mViewHolder.fillItems(this, item, position); 

     return convertView; 
    } 

    // Java Reflection UI Handler 
    private static class UiFiller extends HelperUI { 
     public TextView tv_item_category_users; 
     public UiFiller(View view) { 
      parseUi(view); 
     } 
    } 

    private class ViewHolder { 
     private UiFiller uiFiller; 

     public ViewHolder(View view) { 
      uiFiller = new UiFiller(view); 
     } 

     public void fillItems(final AdapterCategoriesList adapter, final SubCategoriesList item, final int position) { 
      uiFiller.tv_item_category_title.setText(item.getGroup_name() + "(" + item.getUsers() + ")"); 

     } 
    } 
} 
+0

заявить весь код! например, не объявлять код для класса «HelperUI»? –

+0

добавил ответ, это сработало для вас – apk

+0

@apk проблема 'getView', но я не могу решить сейчас –

ответ

0

Проверьте это, он работает в настоящее время

category_items=new ArrayList<SubCategoriesList>(); 
category_items.add(new SubCategoriesList("1")); 
category_items.add(new SubCategoriesList("2")); 

adapter = new AdapterCategoriesList(G.context, category_items); 
uiFiller.lv_main_sub_category_list.setAdapter(adapter); 

Модель класса

public class SubCategoriesList { 

    String user; 

    public void setUser(String user) { 
     this.user = user; 
    } 

    public String getUser() { 
     return user; 
    } 

    public SubCategoriesList(String user) { 
     this.user=user; 
     // TODO Auto-generated constructor stub 
    } 
} 
0

Это неправильно

@Override 
    public long getItemId(int position) { 
     return 0; 
    } 

если вы хотите очень быстрое решение (и немного грязный: D) попытка решения:

@Override 
    public long getItemId(int position) { 
     return position; 
    } 
+0

нет никаких изменений сэр. после изменения, что у меня есть только один элемент в listview –

-1

решена проблема , моим родителем ListView был ScrollView и после удаления этого. моя проблема решена. адаптер был правильным

Смежные вопросы