آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

listview

tmgm  11 سال پیش  11 سال پیش
0 0

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

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

ممنون

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

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

0 0
هیچ کدام از دوستان نطری ندارند؟ لطفا راهنمایی بفرمایید! (11 سال پیش)
0 0
راست میگن. راهنمایی کنید . منم همین مورد برام پیش اومده :( با جواب پایین هم مشکلم حل نشد (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
hosseinAmini  11 سال پیش
+1 0

تابع 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 سال پیش
+2 0

شما باید هر بار یک 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();
    }

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