بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

listview

مدیریت گفتگو
tmgm 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام به اساتید بزرگوار

آقا من یه پروژه دارم که توش ار لیست ویو استفاده کردم و میخام بیست تا ایتم مختلف  رو توش نشون بدم ولی وقتی برنامه رو اجرا میکنم فقط ایتم اخر رو بیست بار نشون میده تو رو خدا کمک کنید.

ممنون

اینم کد هام اگر میتونید کمک کنید.

activity main:

public class Menu extends Activity {

    public ArrayList<StructMenu> menus = new ArrayList<StructMenu>();

    public ArrayAdapter          adapter;
    public ListView              listmenu;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        listmenu = (ListView) findViewById(R.id.listmenu);
        adapter = new AdapterMenu(menus);
        listmenu.setAdapter(adapter);
        // populatedata();
        populatefakedata();
    }


    private void populatefakedata()
    {
        StructMenu menu = new StructMenu();
        for (int i = 0; i < 20; i++)
        {
            menu.name = "name " + i;
            menus.add(menu);
         
        }
        adapter.notifyDataSetChanged();
    }


    private void populatedata()
    {
        StructMenu menu = new StructMenu();
        Cursor cursor = G.database.rawQuery("SELECT *  FROM rest ", null);
        for (cursor.move(0); cursor.moveToNext(); cursor.isAfterLast()) {

            menu.name = cursor.getString(cursor.getColumnIndex("name"));

            menus.add(menu);

        }
        cursor.close();

        adapter.notifyDataSetChanged();
    }
}

اینم کد های array adapter

public class AdapterMenu extends ArrayAdapter<StructMenu> {

    public AdapterMenu(ArrayList<StructMenu> array)
    {
        super(G.context, R.layout.adapter_menu, array);
    }


    private static class ViewHolder
    {

        public TextView  txtname;
        public ImageView picmenu;


        public ViewHolder(View view)
        {

            txtname = (TextView) view.findViewById(R.id.txtmenuname);
            picmenu = (ImageView) view.findViewById(R.id.imgmenu);
        }


        public void fill(ArrayAdapter<StructMenu> adapter, StructMenu item, int position)
        {
            txtname.setText(item.name);
            //   picmenu.setImageResource(item.imglogo);
        }

    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewHolder holder;
        StructMenu item = getItem(position);
        if (convertView == null)
        {
            convertView = G.inflater.inflate(R.layout.adapter_menu, parent, false);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.fill(this, item, position);
        return convertView;
    }
}

نظرات

آس 11 سال پیش
هیچ کدام از دوستان نطری ندارند؟ لطفا راهنمایی بفرمایید!
بانوی شرقی 11 سال پیش
راست میگن. راهنمایی کنید . منم همین مورد برام پیش اومده :( با جواب پایین هم مشکلم حل نشد

پاسخ‌ها 2

hosseinAmini 11 سال پیش

تابع populatedata رو اینجوری بنویسید

 private void populatedata(){
StructMenu menu = new StructMenu();
     Cursor cursor = G.database.rawQuery("SELECT *  FROM rest ", null);
     while (cursor.moveToNext()) {

            menu.name = cursor.getString(cursor.getColumnIndex("name"));

            menus.add(menu);

        }
      cursor.close();

      adapter.notifyDataSetChanged();
}

نظرات

ajn91 11 سال پیش

شما باید هر بار یک StructMenu جدید بسازید نه اینکه یک StructMenu رو هربار مقدارش رو تغییر بدید

 private void populatefakedata()
    {
        
        for (int i = 0; i < 20; i++)
        {
	    StructMenu menu = new StructMenu();
            menu.name = "name " + i;
            menus.add(menu);
          
        }
        adapter.notifyDataSetChanged();
    }

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .