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

محاسبه مبلغ در لیست ویو (حل شد)

علی  11 سال پیش  10 سال پیش
+1 0

سلام:

من در لیست ویو که از سرور می خونه تعدادی قیمت دارم . حالا قیمت ها رو چطوری از لیست ویو بگیرم که می خوام جمع کنم با هم؟ 

0 0
می خواید قیمت هایی که توی آیتم های لیست ویو هست رو با هم جمع کنید؟ (11 سال پیش)
0 0
آره احسان جان . فقط نمی دونم چطور این ایتم ها رو بگیرم. (11 سال پیش)
0 0
خب یه for بنویس که به اندازه آرایت اجرا بشه. هر بار که حلقه اجرا میشه، قیمت رو بریز توی یه متغیر کمکی. بار دوم، قیمت بعدی رو با قیمت قبلی که توی متغیر کمکی هستش جمع بزن. به همین راحتی (11 سال پیش)
0 0
نمیشه تو readData همین کار رو کرد؟ من نفهمیدم اولش رو . هر بار که حلقه اجرا میشه قیمت رو بریز.... این نگرفتم دقیقا کدوم رو میگی (11 سال پیش)
+1 0
اطلاعات رو بصورت json دریافت میکنید ؟ آرایه شما به چه صورت هست ؟ کلاس مربوط به ذخیره اطلاعات شما (توی آموزش های استاد اسم این کلاس Node هست )شما به چه صورت هست ؟ قرار هست که چه تعداد از لیست ویو ها رو با هم جمع بزنید ؟ همه ی اونها جمع می شوند ؟ و یا تعداد خاصی که باید تیک زده بشوند ؟ (11 سال پیش)
+1 0
Criss جان Ali زحمت کشید در آخر این صفحه جواب درست رو گفت و مشکل حل شد . ممنون از تو که اومدی . (11 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
علی  11 سال پیش
0 0

این الان غلطه ولی نمیدونم چطوری درسته ! :(

 
String result = Webservice.readUrl(url, params);
	        if (result != null) {
	            try {
	               G.account.clear();
	                JSONArray tasks = new JSONArray(result);
	                for (int i = 0; i < tasks.length(); i++) {
	                    JSONObject object = tasks.getJSONObject(i);
	                    StructCooperationAccount task = new StructCooperationAccount();
	                    task.Row = object.getString("Row");
	                    task.Desc = object.getString("Desc");
	                    task.Pay = object.getInt("Pay");
	                   
	                    if(object !=  null){
	                    	
	                    	int F = task.Pay;
	                    	int Sum = F + task.Pay;
	                    	 Log.i("LOG", " Sum : " +  Sum);
	                    }
	                    
	                    G.account.add(task);
0 0
تعریف متغیر sum رو ببر قبل از readUrl . اینجوری که شما نوشتی هر بار که یک json می خونی یک متغییر Sum جدید ایجاد می شه و مقدار قبلی که داخلش ریختی صفر میشه. (11 سال پیش)
0 0
iebu جان انجام دادم ولی مثلا اگه دو تا قیمت اومده باشه تو لیست ویو میره اخری رو جمع می کنه . یعنی 22 رو می کنه 44 (11 سال پیش)
0 0
متغییر sum رو فیلد تعریف کنید فکر می کنم مشکلتون حل می شه. (11 سال پیش)
0 0
اینی که نوشتی درسته. متغیر های F و sum رو قبل از for انجام بده که به قول دوستمون هر بار که for اجرا میشه، متغیر ها خالی نشه (11 سال پیش)
0 0
احسان جان بازم نشد. ببین الان 2 تا قیمت اومده تو لیست ویو . در ردیف اول 1 تومان در ردیف دوم 22 تومان حالا وقتی نمایش میده : 44 یعنی ردیف دوم رو امده 2 ها رو جمعه کرده. من اینو نمی خوام !!! (11 سال پیش)
0 0
یعنی جیسونی که دریافت میکنی، دوتا Object داره؟ مطمئنی از سمت سرور عدد دریافت میکنی؟ (11 سال پیش)
0 0
ببین عکس رو این الان لیت ویو هستش. فقط ردیف دو رو در نظر میگیره و 22 میشه 44 (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

0 0
log بگیر ببین چرا دو بار جمع می زنه؟ طول آرایه رو LOG بگیر. (11 سال پیش)
0 0
iebu جان دقیقا تو این کدها کدو رو log بگیرم؟ (11 سال پیش)
0 0
الان نمیدونم چرا هر لاگی می گیرم دوبار چاپ میشه ! (11 سال پیش)
0 0
شاید 2 بار read url رو فراخوانی می کنی. یعنی از دو قسمت مختلف. (11 سال پیش)
0 0
نه این کار رو نکردم . الان مشکل جمع کردن چرا حل نمیشه ؟ یعنی task.pay میاد یه ردیف رو می خونه؟ (11 سال پیش)
0 0
از readUrl و asks.length و حلقه For و Log بگیر . اشکال مشخص می شه. (11 سال پیش)
0 0
منظور دوستمون اینه که توی قسمت های مختلف کدت لاگ بگیر ببین این task.pay دقیقا چی چاپ میکنه و چند بار چاپ میشه. توی for لاگ بگیر (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

خوب وقتی از task.pay لاگ می گیرم نتیجه میشه این .

 Log.i("LOG", " Pay : " + task.Pay);

Pay : 1
Pay : 22
0 0
اگه یکبار میاره درسته بفیه رو هم بگیر. (11 سال پیش)
0 0
بقیه رو هم گرفتم مثل همین لاگ میاره ولی جمع اعداد درست نیست. (11 سال پیش)
0 0
البته توجه داشته باشید که اینها آرایه هستند نه معمولی (11 سال پیش)
0 0
چرا ایتم های adapter رو جمع نمی زنی؟ G.accounts منظورمه. (11 سال پیش)
0 0
چه فرقی می کنه ؟ در کل باید هر چند تا آرایه هست با هم جمع زده بشه. من مشکلم اینه نمیدونم آرایه های اینجا چطور جمع زده میشه . (11 سال پیش)
پاسخ به سوال 
Ali  11 سال پیش
+4 0

سلام
بعد از اینکه G.account از سمت سرور تغذیه شد این 5خط کد رو اجرا کن:

int sum = 0;
for(StructCooperationAccount struct : G.account){
sum = sum + struct.Pay;
}
Log.i("LOG", " Sum : " + sum);
0 0
Ali جان ایول داری مرسی درست شد . ممنون (11 سال پیش)
0 0
خواهش میکنم. (11 سال پیش)
0 0
Ali من اگه بخوام این sum رو جای دیگه استفاده کنم جمع اشتباه میشه. چکار کنم؟ (11 سال پیش)
0 0
یعنی چی؟ میشه بیشتر توضیح بدی؟ (11 سال پیش)
0 0
کلا حل شد ممنون علی جان و بقیه دوستان . (11 سال پیش)
پاسخ به سوال 
SaeiD-as  10 سال پیش
0 0

با راهنمایی @Ali قسمتی از کارم حل شد، من در برنامم تعداد رو هم میگیرم، میخوام زمانی که تعداد تغییر کرد بلافاصله قیمت کل هم تغییر کنه، اما فقط زمانی که یبار اکتیویتی حاضر رو میبندم و باز میکنم قیمت کل تغییر میکنه

تعداد رو داخل آداپتر تنظیم کردم و قیمت کل رو بعد از خواندن اطلاعات، ممنون میشم راهنماییم کنین

ویرایش

در متد fill داخل آداپتر تعداد رو بوسیله Button کم و زیاد میکنم:(فقط دکمه اضافه کردن رو قرار دادم، کم کردن هم مانند همینه)

 btnFactorPlus.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    requestNumber++;

                    params.clear();
                    params.add(new BasicNameValuePair("request_name", "" + G.preferences.getLong("RECIEVED_ID", 1024)));
                    params.add(new BasicNameValuePair("request_brand", "" + item.id));
                    params.add(new BasicNameValuePair("request_number", "" + requestNumber));
                    Webservice.readUrl("http://192.168.56.1/web/?action=request", params);

                    txtFactorNumber.setText("" + requestNumber);
                }
            });

در تابع اصلی هم تعریف کردم:

 ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user_id", "" + G.preferences.getLong("RECIEVED_ID", 1024)));

        sendData(params);

        int sum = 0;
        for (StructBazarche struct: requests) {
            sum += (struct.price * struct.number);
        }
        TextView txtFactorTotal = (TextView) findViewById(R.id.txtFactorTotal);      <--در اینجا قیمت کل نشون داده شده
        txtFactorTotal.setText("" + sum);

 

0 0
(10 سال پیش)
0 0
بعد از تغییر تعداد ListView رو آپدیت می کنی؟ (10 سال پیش)
0 0
منظورتون استفاده از دستور notifydatasetchange هست؟ نه، چطوری و کجا ازش استفاده کنم؟ داخل آداپتر یا اکتیویتی؟ (10 سال پیش)
+1 0
نمی دونم تعداد رو کاربر چجوری وارد می کنه. اما اگه با EditText مقدار رو می گرید می تونید در رویداد تغییر متن کنترل Adapter رو آپدیت کنید. (10 سال پیش)
0 0
من دوتا Button قرار دادم که یکیش تعداد رو اضافه میکنه و یکیش تعداد رو کم میکنه، Button ها رو داخل آداپتر تنظیم کردم، اما جمع کل رو داخل اکتیویتی طبق راهنمایی @ali حالا زمانی که روی یکی از Buttonها کلیک میشه باید داخل اکتیویتی بگم یبار دیگه جمع ها رو محاسبه کن که راه حلشو نمیدونم! (10 سال پیش)
+1 0
چیزی که الان به ذهنم می رسه اینه که textView مربوط به جمع رو در اکتیویتی به صورت Static تعریف کنید و بعد از کلیک دکمه افزایش یا کاهش در متد fill مربوط به adapter، مقدار مجموع جدید رو هم با متد setText برای TextView اکتیویتی مقدار دهی کنید. (10 سال پیش)
+1 0
مرسی @vahid جان مشکلم فکر کنم با همین روش شما داخل لینک زیر حل شد (10 سال پیش)
پاسخ به سوال 
SaeiD-as  10 سال پیش
0 0


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