2013-08-06 4 views
1

У меня проблема с заполнением пользовательского списка макета при щелчке. У меня нет опыта работы с java и ArrayLists. Мой код в основном построен с использованием учебников в Интернете. Например, я узнаю намного быстрее. Итак, у меня есть класс для настраиваемого элемента и адаптер для него. Они идут так:Android Динамическое заполнение пользовательского списка

public class Prodf { 
     public int icon; 
     public String id; 
     public String nume; 
     public String um; 
     public String pu; 
     public String cant; 
     public Prodf(){ 
      super(); 
     } 

     public Prodf(int icon, String id, String nume, String um, String pu, String cant) { 
      super(); 
      this.icon = icon; 
      this.id = id; 
      this.nume = nume; 
      this.um = um; 
      this.pu = pu; 
      this.cant = cant; 
     } 
    } 

и адаптер:

public class ProdfAdapter extends ArrayAdapter<Prodf> { 

     Context context; 
     int layoutResourceId; 
     Prodf data[] = null; 
     Context mContext; 

     public ProdfAdapter(Context context, int layoutResourceId, Prodf[] data) { 
      super(context, layoutResourceId, data); 
      this.layoutResourceId = layoutResourceId; 
      this.mContext = context; 
      this.context = context; 
      this.data = data; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View row = convertView; 
      ProdfHolder holder = null; 
      if(row == null) 
      { 
       LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
       row = inflater.inflate(layoutResourceId, parent, false); 
       holder = new ProdfHolder(); 
       holder.hldIcon = (ImageView)row.findViewById(R.id.fffIcon); 
       holder.hldId = (TextView)row.findViewById(R.id.fID); 
       holder.hldNume = (TextView)row.findViewById(R.id.fTitlu); 
       holder.hldUm = (TextView)row.findViewById(R.id.fUM); 
       holder.hldPu = (TextView)row.findViewById(R.id.fPU); 
       holder.hldCant = (TextView)row.findViewById(R.id.fCant); 
       row.setTag(holder); 
      } 
      else 
      { 
       holder = (ProdfHolder)row.getTag(); 
      } 
      Prodf produ = data[position]; 
      holder.hldId.setText(produ.id); 
      holder.hldNume.setText(produ.nume); 
      holder.hldUm.setText(produ.um); 
      holder.hldPu.setText(produ.pu); 
      holder.hldCant.setText(produ.cant); 
      return row; 
     } 


     static class ProdfHolder 
     { 
      ImageView hldIcon; 
      TextView hldId; 
      TextView hldNume; 
      TextView hldUm; 
      TextView hldPu; 
      TextView hldCant; 
     }  
    } 
  • Как использовать эти, в событии нажатия кнопки, чтобы добавить полный элемент для пользовательского макета ListView?

Bellow id, где я установил событие кнопки click и установил адаптер для списка. Однако я использую разные типы в адаптере и в функции добавления ... Как их исправить?

... 
ArrayList<Prodf> produsele = new ArrayList<Prodf>(); 
.... 
Button badd = (Button) findViewById(R.id.btn_addpro); 
View.OnClickListener eventHandler2 = new View.OnClickListener() { 
@Override 
public void onClick(View arg0) { 
Prodf produsu = new Prodf(0, "id1", "numepro", "PCS", "3.20", "2");   
produsele.add(produsu);     
ProdfAdapter adapter = new ProdfAdapter(MyActivity.this,R.layout.prodf_item, produsele); 
mylist.setAdapter(adapter);        
adapter.notifyDataSetChanged(); 

Как вы заметили, мой адаптер расширяет ArrayAdapter и ожидает Prodf [], и когда я заселить элементы я использую ArrayList. Я думаю, что это моя проблема, но я не знаю, как сделать их ладят ... значит, я получаю сообщение об ошибке компилятора:

Конструктор ProdfAdapter (MyActivity, INT, ArrayList) является неопределенным

Я знаю, почему, но я не знаю, как это исправить.

+0

Вы должны установить этот адаптер в свой список. –

+0

Я делаю это, позвольте мне показать его вам (я отредактирую вопрос, чтобы показать его). У меня проблема с заполнением Arraylist и использованием адаптера – user1137313

ответ

0

вы должны:

+0

, пожалуйста, проверьте мой отредактированный вопрос. Я делаю все эти вещи, кроме добавления элемента в адаптер правильно ... – user1137313

0

я нашел ответ на мой собственный. Мне пришлось изменить Адаптер, чтобы получить тот же тип информации, которую я добавлял в событие click. Теперь это работает.

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