listview
سلام به اساتید بزرگوار
آقا من یه پروژه دارم که توش ار لیست ویو استفاده کردم و میخام بیست تا ایتم مختلف رو توش نشون بدم ولی وقتی برنامه رو اجرا میکنم فقط ایتم اخر رو بیست بار نشون میده تو رو خدا کمک کنید.
ممنون
اینم کد هام اگر میتونید کمک کنید.
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;
}
}
تابع 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();
}
شما باید هر بار یک 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();
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .