کلیدستان

نسخه‌ی کامل: محاسبه بر اساس دو دکمه yes و no ، در برنامه نویسی اندروید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.
من واسه برنامه ام دوتا button  درست کردم که میخوام این کارو برام انجام بده لطفا کمکم کنید
میخوام که یکسری اعداد رو با  هم جمع کنه و در نهایت اون عدد رو برام نمایش بده
الگوریتمش یه این صورته:
یکی از دکمه ها اسمش yes  هست  و دیگری no
حالا اگه روی yes اکی کرد عدد 8 رو جمع کنه اگه بازم اکی کرد عدد 32 و بازم اکی  کرد عدد 1 و اگه بازم اکی کرد عدد 16  و اگه بازم اکی کرد 2 و بازم اکی کرد عدد 4 رو جمع کنه
حالا کاره دکمه no به این صورته که اگه روی اون اکی کرد از اون عددی که میخواد جمع بشه صرف نظر کنه بره به عدد بعدی و منتظر دستوری باشه که کار بر میخواد بهش بده باشه((یعنی یا میخواد روی yes  یا no  اکی کنه))
فقط بگم که ترتیبشون مهمه
8
32
1
16
2
4
شاید سوالم طولانی شد ببخشید
اگه جواب بدین خیلی خوب میشه
سلام دوست عزیز.
شما ابتدا یک لیست آرایه ای (ArrayList) تعریف کنید (مثلا با نام myNumbers) و این اعدادی که گفتید را به ترتیب در آن قرار بدهید (به عنوان عناصر آن لیست آرایه ای). برای تعریف لیست آرایه ای (ArrayList)، کلید زیر را بخوانید :

http://www.kelidestan.com/keys/keys.php?key=314

همچنین یک متغیر هم با نام myCursor تعریف کنید که نقش اشاره گر (مکان نما) برای عددی که در هر مرحله باید جمع شود را ایفا می کند (اشاره گر به عناصر لیست آرایه ای). 
سپس دو دکمه yes و no را بسازید. آنگاه کدهای مربوط به دکمه ها (Button) را باید بنویسیم (کدها برای تعیین عملکرد دکمه بعد از اشاره بر روی آن). 
خوب حالا می رویم سراغ الگوریتمی که باید به کار ببریم. متغیر  myCursor  در ابتدا مقدار 0 را خواهد داشت (زیرا اولین عنصر یک لیست آرایه ای، دارای شماره 0 است --> منظور شماره برای اشاره به عنصر است). اگر کاربر بر روی کلید yes کلیک کند، بر اساس شماره ذخیره شده در  myCursor ، یک عنصر را از لیست آرایه ای myNumbers فراخوانی کرده و با مقدار مورد نظرمان جمع می کنیم و سپس مقدار  myCursor را 1 واحد افزایش می دهیم (برای مرحله بعد که کاربر دوباره بر روی یکی از دو دکمه اشاره می کند). اما اگر بر روی دکمه no اشاره کند، تنها مقدار  myCursor را 1 واحد افزایش می دهیم (اما هیچ عددی را جمع نمی کنیم).
برای  myCursor  هم یک حد ماکزیمم تعیین می کنیم که اگر از یک مقداری بیشتر شد، دیگر دو دکمه هیچ عملیاتی را انجام ندهند.

سلام مهندس
قسمت اولو ببین اینجوری درست تعریف کردم؟

کد پی‌اچ‌پی:
ArrayList<Integer> array=new ArrayList<Integer>();
array.
add(8);
array.
add(32);
array.
add(1);
array.
add(16);
array.
add(2);
arr​ay.add(4); 

میشه شما اون متغییر myCursor  رو برام تعریف کنید؟
اون قسمتشو متوجه نمیشم چطوری انجام بدم
خیلی تلاش کردم نشد
من کل پروژه اندروید رو ساختم. فایل پروژه اندروید و همچنین فایل apk ساخته شده از آن، پیوست این ارسال شده است. حتما کدها را بخوانید تا شیوه کدنویسی را متوجه بشوید.
کدهای Activity اصلی به صورت زیر می باشد :

کد:
package com.kelidestan.addnumbers;

import java.util.ArrayList;
import java.util.Arrays;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    
    public ArrayList<Integer> myNumbers;
    public int muCursor = 0;
    public int muCursor_max = 5;
    public int sum = 0;
    public TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        myNumbers = new ArrayList<Integer>(Arrays.asList(8,32,1,16,2,4));
        tv = (TextView) findViewById(R.id.textView1);
        String sum_string = String.valueOf(sum);
        tv.setText(sum_string);
        
        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {
                                  
             @Override
             public void onClick(View v) {
                 if (muCursor <= muCursor_max) {
                     sum = sum + myNumbers.get(muCursor);
                     String sum_string = String.valueOf(sum);
                     tv.setText(sum_string);
                     muCursor = muCursor + 1;
                 }
             }
        });
        
        Button b2 = (Button) findViewById(R.id.button2);
        b2.setOnClickListener(new OnClickListener() {
                                  
             @Override
             public void onClick(View v) {
                 if (muCursor <= muCursor_max) {
                     muCursor = muCursor + 1;
                 }
             }
        });
    }


}

یک عکس از برنامه اندروید :


سلام دوباره خدمت شما مهندس عزیز
واقعا دستت درد نکنه این کارتون خیلی کمکم کرد
در ضمن بازم دستتون درد نکنه که همچین سایت خوب و فعالی رو برپا کردین
موفق باشید
یاعلی

 
ادمین جان یه سوال دیگه ازتون داشتم
مشکلم به این صورته که شما این کدی که برام گزاشتین رو میخواستم داخلش یک Image Switcher  تعریف کنم که همزمان هم چندتا عکس نمایش بده و هم اینکه کاربر قادر باشه تو همون صفحه از اون محاسبات استفاده بکنه
من اون کد برنامه Image Switcher رو دارم ولی چندبار که کدهاو کپی پست کردم نشد و اکلیپس اررور میگیره واسه اینکارم
اگه بشه راهنمایی کنید باز ممنون میشم
کد های مربوط به برنامه Image Switcher رو براتون میزارم اگه بتونین درستش کنید ممنون میشم ازتون

 [attachment=539
این موارد به عهده خودتان. 
برای برطرف کردن مشکل، خیلی چیزهای دیگر یاد خواهید گرفت.

باشد
ببینم میتونم برطرفش کنم


 
ادمین به کمکتان احتیاج دارم
من یه قسمتی شو اینجوری درست کردم
کدهای مربوط به قسمت activity_main.xml رو به اینصورت نوشتم

کد پی‌اچ‌پی:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
xmlns:tools="http://schemas.android.com/tools"
    
android:layout_width="match_parent"
    
android:layout_height="match_parent"
    
android:paddingBottom="@dimen/activity_vertical_margin"
    
android:paddingLeft="@dimen/activity_horizontal_margin"
    
android:paddingRight="@dimen/activity_horizontal_margin"
    
android:paddingTop="@dimen/activity_vertical_margin"
    
tools:context=".MainActivity" >

    <
Button
        android
:id="@+id/button1"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignParentLeft="true"
        
android:layout_alignParentTop="true"
        
android:text="yes" />

    <
Button
        android
:id="@+id/button2"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignBaseline="@+id/button1"
        
android:layout_alignBottom="@+id/button1"
        
android:layout_toRightOf="@+id/button1"
        
android:text="no" />

    <
TextView
        android
:id="@+id/textView1"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignBaseline="@+id/button2"
        
android:layout_alignBottom="@+id/button2"
        
android:layout_marginLeft="29dp"
        
android:layout_toRightOf="@+id/button2"
        
android:text="TextView" />

        <
ImageSwitcher
            android
:id="@+id/switcher"
            
android:layout_width="match_parent"
            
android:layout_height="match_parent"
            
android:layout_alignLeft="@+id/gallery"
            
android:layout_below="@+id/button1" />

    <
Gallery
        android
:id="@+id/gallery"
        
android:layout_width="match_parent"
        
android:layout_height="60dp"
        
android:layout_alignParentBottom="true"
        
android:layout_alignParentLeft="true"
        
android:background="#55000000"
        
android:gravity="center_vertical"
        
android:spacing="16dp" />

</
RelativeLayout

اینم یه عکس از تصویر برنامه

 [attachment=541]

 ولی کدهای مربوط به قسمت MainActivity.java
رو نتونستم تکمیل کنم
این کدهای مربوط به برنامه image switcher هست
لطفا کمک کنید تا برنامه ام زودتر تکمیل بشه

کد پی‌اچ‌پی:
package com.example.imageswitcherdemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

@
SuppressWarnings("deprecation")
public class 
MainActivity extends Activity implements
        
AdapterView.OnItemSelectedListenerViewSwitcher.ViewFactory {

    @
Override
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
requestWindowFeature(Window.FEATURE_NO_TITLE);

        
setContentView(R.layout.activity_main);

        
mSwitcher = (ImageSwitcherfindViewById(R.id.switcher);
        
mSwitcher.setFactory(this);
        
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                
android.R.anim.fade_in));
        
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                
android.R.anim.fade_out));

        
Gallery g = (GalleryfindViewById(R.id.gallery);
        
g.setAdapter(new ImageAdapter(this));
        
g.setOnItemSelectedListener(this);
    }

    public 
void onItemSelected(AdapterView<?> parent, View v, int position,
            long id) {
        mSwitcher.setImageResource(mImageIds[position]);
    }

    public void onNothingSelected(AdapterView<?parent) {
    }

    public 
View makeView() {
        
ImageView i = new ImageView(this);
        
i.setBackgroundColor(0xFF000000);
        
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
        
i.setLayoutParams(new ImageSwitcher.LayoutParams(
                
LayoutParams.MATCH_PARENTLayoutParams.MATCH_PARENT));
        return 
i;
    }

    private 
ImageSwitcher mSwitcher;

    public class 
ImageAdapter extends BaseAdapter {
        public 
ImageAdapter(Context c) {
            
mContext c;
        }

        public 
int getCount() {
            return 
mThumbIds.length;
        }

        public 
Object getItem(int position) {
            return 
position;
        }

        public 
long getItemId(int position) {
            return 
position;
        }

        public 
View getView(int positionView convertViewViewGroup parent) {
            
ImageView i = new ImageView(mContext);

            
i.setImageResource(mThumbIds[position]);
            
i.setAdjustViewBounds(true);
            
i.setLayoutParams(new Gallery.LayoutParams(
                    
LayoutParams.WRAP_CONTENTLayoutParams.WRAP_CONTENT));
            
i.setBackgroundResource(R.drawable.picture_frame);
            return 
i;
        }

        private 
Context mContext;

    }

    private 
Integer mThumbIds = { R.drawable.sample_thumb_0,
            
R.drawable.sample_thumb_1R.drawable.sample_thumb_2,
            
R.drawable.sample_thumb_3R.drawable.sample_thumb_4,
            
R.drawable.sample_thumb_5R.drawable.sample_thumb_6,
            
R.drawable.sample_thumb_7 };

    private 
Integer mImageIds = { R.drawable.sample_0R.drawable.sample_1,
            
R.drawable.sample_2R.drawable.sample_3R.drawable.sample_4,
            
R.drawable.sample_5R.drawable.sample_6R.drawable.sample_7 };



اینم کدهای مربوط به برنامه محاسباتی هستش که شما قرار قرار دادین

کد پی‌اچ‌پی:
package com.kelidestan.addnumbers;

import java.util.ArrayList;
import java.util.Arrays;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class 
MainActivity extends Activity {
    
    public 
ArrayList<IntegermyNumbers;
    public 
int muCursor 0;
    public 
int muCursor_max 5;
    public 
int sum 0;
    public 
TextView tv;

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_main);
        
        
myNumbers = new ArrayList<Integer>;(Arrays.asList(8,32,1,16,2,4));
        
tv = (TextViewfindViewById(R.id.textView1);
        
String sum_string String.valueOf(sum);
        
tv.setText(sum_string);
        
        
Button b1 = (ButtonfindViewById(R.id.button1);
        
b1.setOnClickListener(new OnClickListener() {
                                  
             @
Override
             
public void onClick(View v) {
                 if (
muCursor <= muCursor_max) {
                     
sum sum myNumbers.get(muCursor);
                     
String sum_string String.valueOf(sum);
                     
tv.setText(sum_string);
                     
muCursor muCursor 1;
                 }
             }
        });
         
        
Button b2 = (ButtonfindViewById(R.id.button2);
        
b2.setOnClickListener(new OnClickListener() {
                                  
             @
Override
             
public void onClick(View v) {
                 if (
muCursor <= muCursor_max) {
                     
muCursor muCursor 1;
                 }
             }
        });
    }




میخام که این دو دستور رو ترکیب کنم تا یک mainactivityداشته باشیم
اقای ادمین من اینجوری درستش کردم
باید بگم که برنامه برنامه بدون هیچ ارروری اجرا میشه ولی اون دوتا دکمه محاسباتی کار نمیکنن یعنی روشون کلیک میکنی هیچ اتفاغی نمیوفته
اینم تصویری از برنامه

[attachment=553]

اینم کدهای مربوط به activity_main.xml

 
کد پی‌اچ‌پی:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
xmlns:tools="http://schemas.android.com/tools"
    
android:layout_width="match_parent"
    
android:layout_height="match_parent"
    
android:paddingBottom="@dimen/activity_vertical_margin"
    
android:paddingLeft="@dimen/activity_horizontal_margin"
    
android:paddingRight="@dimen/activity_horizontal_margin"
    
android:paddingTop="@dimen/activity_vertical_margin"
    
tools:context=".MainActivity" >

    <
Button
        android
:id="@+id/button1"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignParentLeft="true"
        
android:layout_alignParentTop="true"
        
android:text="yes" />

    <
Button
        android
:id="@+id/button2"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignBaseline="@+id/button1"
        
android:layout_alignBottom="@+id/button1"
        
android:layout_toRightOf="@+id/button1"
        
android:text="no" />

    <
TextView
        android
:id="@+id/textView1"
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:layout_alignBaseline="@+id/button2"
        
android:layout_alignBottom="@+id/button2"
        
android:layout_marginLeft="29dp"
        
android:layout_toRightOf="@+id/button2"
        
android:text="TextView" />

        <
ImageSwitcher
            android
:id="@+id/switcher"
            
android:layout_width="match_parent"
            
android:layout_height="match_parent"
            
android:layout_alignLeft="@+id/gallery"
            
android:layout_below="@+id/button1" />

    <
Gallery
        android
:id="@+id/gallery"
        
android:layout_width="match_parent"
        
android:layout_height="60dp"
        
android:layout_alignParentBottom="true"
        
android:layout_alignParentLeft="true"
        
android:background="#55000000"
        
android:gravity="center_vertical"
        
android:spacing="16dp" />

</
RelativeLayout

مشکل این کدها کجاست که اون دکمه ها اجرا نمیشه؟

 
پروژه اندروید را پیوست کنید تا بررسی کنم.

خیلی ممنون

[attachment=557]
فقط اقای ادمین من بعد از بررسی ها به این مشکل بر خوردم که شما اون برنامه محاسباتی رو که نوشتین باید یه دکمه دیگه براش تعریف میکردین که پس از یکبار محاسبه  یه حالت refresh داشته باشه که کاربر بتونه بدون اینکه از برنامه بیاد بیرون و دوباره بره داخلش اون محاسباتو  برای بار دوم انجام بده
من خودم قبل اینکه این پیوست رو ارسال کنم بهتون خیلی تلاش کردم تا این دکمه رو بهش اضافه کنم ولی نشد
 منتظر پاسختان هستم

 
اقای ادمین بررسی کردین فایلی که پیوست رو؟؟
 

 
توصیه می کنم مباحث اولیه برنامه نویسی اندروید را حتما بخوانید، چون مواردی که خطا داشت، جزء اصول اولیه بودند. مثلا عکس زیر را ببینید :


شما دو بار، یک مشخصه را در کد xml نوشته بودید که باعث می شود برنامه eclipse خطا بگیرد.
من ترجیح دادم که برنامه مربوط به نمایش عکس ها را دانلود کنم و سپس همان کدهای محاسباتی را در آن وارد نمایم. هم پروژه اندروید و هم فایل apk از آن، پیوست این ارسال شده است، اما شدیدا توصیه می کنم که تفاوت این پروژه اندروید با پروژه اندروید مربوط به نمایش عکس ها را بررسی کنید تا متوجه تغییرات بشوید، چون در غیر این صورت، کار بنده هیچ فایده ای برای شما نداشته است.
این هم یک عکس از برنامه اندروید :


ابتدا از شما تشکر میکنم که وقت گزاشتین و انجام دادین
درضمن  من تازه وارد عرصه برنامه نویسی شدم دارم با نوشتن همچین برنامه های ساده ای به کمک دوستان این علم برنامه نویسی رو یاد میگیرم
دوس ندارم بصورت تئوری یاد بگیرم برنامه نویسی رو
بازم هم تشکر میکنم
 
اتفاقا من دقیقا متوجه شدم که با این روش در حال یادگیری هستید و به همین دلیل هم تذکر دادم که بهتر است تمامی مباحث اولیه نوشته شده در سایت را هم بخوانید تا برخی نکات در مسیر یادگیری، جا نیفتند و آنها را هم متوجه شوید (هم در دسته بندی اول و هم مباحث ساده از سایر دسته بندی ها در بخش آموزش برنامه نویسی اندروید). نمی دونم زیاد به انجمن سایت کلیدستان سر می زنید یا نه، ولی من قبل از پاسخ دادن به سوال ها، ابتدا برایم مهم است که پاسخ را به طور دقیق بدانم (یعنی بیخودی با جواب اشتباه، وقت کاربران را تلف نکنم) و دوم هم اینکه اگر به کاربر پاسخ دادم، حتما وی را تشویق کنم که به دنبال یادگیری نکات بیشتر برود.
به هر حال شما تازه شروع کردید و گفتم نکته ای رو جا نندازید. من هم دقیقا با شما هم روحیه هستم و خیلی حوصله خواندن تئوری ندارم و تا کد ننویسم، احساس نمی کنم که چیزی رو یاد گرفتم.
به هر حال، در این مسیر پر هیجان، موفق باشید.

  
دقیقا
بله من حداقل چندبار در روز وارد سایت کلیدستان میشم و اموزشهای برنامه نویسی اندروید و جاوا رو میخونم و از شما هم باز تشکر میکنم که همچین سایته خوبی رو وقت گزاشتین و راه اندازی کردین
درضمن این توصیه شما را اویزه گوشم میکنم و حتما بهش عمل میکنم تا از این به بعد بیشتر به نکات ریز توجه کنم و کمتر وقت ارزشمند شما و کاربران دیگه رو بگیرم
ارزوی موفقیت و پیروزی برای شما دوست عزیز