کلیدستان

نسخه‌ی کامل: اضافه کردن ایتم ها به صورت یک یکی به لیست ویو سفارشی (Animation برای item ها)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان.
من تقریبا بلدم که با لیست ویو کار کنم اما مشگلم رو الان توضیح میدم.
هنگامی که یک لیست ویو ساده میسازیم برای اضافه کردن ایتم ها به اون کافیه کد زیرو

کد پی‌اچ‌پی:
msgList.add("1"); 

وارد کنیم تا 1 به ایتم ما اضافه بشه مشگل من اینه که توی لیست ویو سفارشی نمیتونم به این صورت ایتم هارو اضافه کنم
چیزی که من میخوام مثل برنامه لاینه که پیام ها یکی یکی به انتهای اون اضافه بشه اگه بشه نمونه کدی ازش بزارید ممنون میشم
هیچکی جواب نداد مشگل منو یک لیست ویو سفارشی که بشه ایتم هارو یکی یکی بهش اضافه کرد مثل لاینو وایبر
سلام.
در اینگونه ListView ها، لیست item ها به صورت کامل ساخته می شود (نه اینکه یکی یکی به لیست اضافه کنیم)، بعد شیوه آمدن item ها به درون صفحه است که با تاخیر و بر اساس یک Animation خواهد بود (در واقع نمایش آنها است که این حس را القا می کند که یکی یکی افزوده می شوند).
شما باید یک انیمیشن را برای آمدن item ها به درون صفحه تعیین کنید. بنابراین باید کد مربوط به Animation مورد نظر، درون کدهای Adapter نوشته شود (Adapter ای که برای ساخت item ها به کار می رود).
من یک کد را برایتان ذکر می کنم :
ابتدا در شروع Activity ، کد زیر را می نویسیم (تعریف یک متغیر) :

کد پی‌اچ‌پی:
ArrayList<BooleanItems_shown_or_not = new ArrayList<Boolean>;(); 

این متغیر برای این منظور به کار خواهد رفت که تشخیص بدهیم کدام item ها قبلا به درون صفحه آمده اند تا با اسکرول دوباره، انیمیشن برای دومین بار اجرا نشود.
بعد درون Adapter ، کد زیر را می نویسیم :

کد پی‌اچ‌پی:
int Items_shown_or_not_size Items_shown_or_not.size();
if(
Items_shown_or_not_size position+1){
    
Items_shown_or_not.add(true);
}
Animation myAnimation_2 AnimationUtils.makeInChildBottomAnimation(this.ctx);
if(
Items_shown_or_not.get(position) & position>10){ // first row will be animated so we do it after that number
    
row.setAnimation(myAnimation_2);
    
Items_shown_or_not.set(positionfalse);


که در آن، row همان View مربوط به ردیف (item) می باشد.
تعیین کرده ایم که انیمیشن برای position های بزرگتر از 10 اجرا شود، زیرا برای item های اول موجود در صفحه، چندان زیبا نخواهد بود (هدف ما جذاب بودن ظاهر ListView است).
کد مورد نظر باید درون روش getView از Adapter نوشته شود. به عنوان مثال :

کد پی‌اچ‌پی:
@Override
public View getView(int positionView convertViewViewGroup parent) {
    
View row convertView;
    
    if (
row == null) {
        
LayoutInflater inflater = (LayoutInflaterctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        
row inflater.inflate(layoutIdparentfalse);
    }
    
    
    
// show slide up animation for items that comes to screen (start) ------------------------------------
    
int Items_shown_or_not_size Items_shown_or_not.size();
    if(
Items_shown_or_not_size position+1){
        
Items_shown_or_not.add(true);
    }
    
Animation myAnimation_2 AnimationUtils.makeInChildBottomAnimation(this.ctx);
    if(
Items_shown_or_not.get(position) & position>10){ // first row will be animated so we do it after that number
        
row.setAnimation(myAnimation_2);
        
Items_shown_or_not.set(positionfalse);
    }
    
// show slide up animation for items that comes to screen (end) ------------------------------------
    

    
    // end
    
return row;



این یک مدل Animation است، اکنون که روند کلی آن را یاد گرفته اید می توانید Animation های دلخواه دیگر را نیز تست کنید.

اگر قبلا با Adapter در ساخت ListView آشنایی ندارید، توصیه می کنم کلید زیر را بخوانید (کد کامل یک Adapter دلخواه و چگونگی به کار بردن آن برای ListView در آن ذکر شده) :

کلید شماره 843

آقا ما که نفهمیدیم!!!!! اینجا:
public View getView(int position, View convertView, ViewGroup parent)
این ارورو:
Syntax error, insert ";" to complete LocalVariableDeclarationStatement
میده.