mardi 5 janvier 2016

How to use Random and count clicks on Android app

I'm making this app that when you press like or dislike it will count the number and save it. that is not that hard but here's the problem I need the names to be chosen randomly and the likes and dislikes to be saved for each randomly chosen name separately but every time i press like or dislike Random generates a new number and stores likes or dislikes on the new randomly chosen name

I'm posting all my code below and for this example i only have three names and fixed numbers on the arrays so that you can easily check the problem yourselves

MainActivity java

package gr.com.plaza.stackoverflowquestion;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Second question = new Second();

    TextView boyname = (TextView)findViewById(R.id.boy);
    boyname.setText(question.getboyname());
    TextView girlname = (TextView)findViewById(R.id.girl);
    girlname.setText(question.getgirlname());
}
public void yesclick(View v){
    Intent click = new Intent(this, SecondActivity.class);

    String boyname = ((TextView)findViewById(R.id.boy)).getText().toString();
    click.putExtra("boyname", boyname);
    String girlname = ((TextView)findViewById(R.id.girl)).getText().toString();
    click.putExtra("girlname", girlname);

    startActivity(click);
}
public void noclick(View v){
    Intent click = new Intent(this, SecondActivity.class);

    String boyname = ((TextView)findViewById(R.id.boy)).getText().toString();
    click.putExtra("boyname", boyname);
    String girlname = ((TextView)findViewById(R.id.girl)).getText().toString();
    click.putExtra("girlname", girlname);

    startActivity(click);
}
}

SecondActivity java

package gr.com.plaza.stackoverflowquestion;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;

public class SecondActivity extends AppCompatActivity {

Second question = new Second();
private int likes = question.getlikes();
private int dislikes = question.getdislikes();
private int count = question.getcounter();

private boolean isbuttonclicked = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    Bundle mainactivitydata = getIntent().getExtras();

    String boyname = mainactivitydata.getString("boyname");
    TextView boynamesecond = (TextView)findViewById(R.id.boysecond);
    boynamesecond.setText(boyname);
    String girlname = mainactivitydata.getString("girlname");
    TextView girlnamesecond = (TextView)findViewById(R.id.girlsecond);
    girlnamesecond.setText(girlname);

    Button like = (Button)findViewById(R.id.like);
    Button dislike = (Button)findViewById(R.id.dislike);

    like.setOnClickListener(
            new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (v.getId() == R.id.like) {
                        isbuttonclicked = !isbuttonclicked;
                        TextView like = (TextView)findViewById(R.id.like);

                        like.setText(count+"  " + likes++);
                    }
                }
            }
    );
    dislike.setOnClickListener(
            new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (v.getId() == R.id.like) {
                        isbuttonclicked = !isbuttonclicked;
                        TextView dislike = (TextView)findViewById(R.id.dislike);

                        dislike.setText(count+"  " + dislikes++);
                    }
                }
            }
    );
}
public void answeredclick(View v){
    Intent click = new Intent(this, MainActivity.class);
    startActivity(click);
}

}

MainActivity xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
xmlns:tools="http://ift.tt/LrGmb4"
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="gr.com.plaza.stackoverflowquestion.MainActivity"
android:id="@+id/main">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/boyname"
    android:id="@+id/boy"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="61dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/girlname"
    android:id="@+id/girl"
    android:layout_below="@+id/boy"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="49dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/yesbutton"
    android:id="@+id/yes"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:onClick="yesclick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/nobutton"
    android:id="@+id/no"
    android:layout_below="@+id/yes"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="39dp"
    android:onClick="noclick" />

</RelativeLayout>

SecondActivity xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
xmlns:tools="http://ift.tt/LrGmb4"
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="gr.com.plaza.stackoverflowquestion.SecondActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/boyname"
    android:id="@+id/boysecond"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="61dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/girlname"
    android:id="@+id/girlsecond"
    android:layout_below="@+id/boysecond"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="49dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/answered"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:onClick="answeredclick" />


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/likebutton"
    android:id="@+id/like"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/dislikebutton"
    android:id="@+id/dislike"
    android:layout_alignBottom="@+id/like"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />
</RelativeLayout>

Second java

package gr.com.plaza.stackoverflowquestion;

import java.util.Random;

public class Second {


    private String[] boyname = new String[]{
            "George",
            "Jim",
            "Mike"
    };
    private String[] girlname = new String[]{
            "Mary",
            "Helen",
            "Julia"
    };
    private int[] likes = new int[]{
            0,
            1,
            2
    };
    private int[] dislikes = new int[]{
            3,
            4,
            5
    };
    private int[] counter = new int[]{
            6,
            7,
            8
    };

    public int randomindex = new Random().nextInt(boyname.length);

    private String[] name = new String[]{
            boyname[randomindex],
            girlname[randomindex]
    };
    private int[] likability = new int[]{
            likes[randomindex],
            dislikes[randomindex],
            counter[randomindex]
    };
    public String getboyname() {
            return name[0];
    }

    public String getgirlname() {
            return name[1];
    }

    public int getlikes() {
            return likability[0];
    }

    public int getdislikes() {
            return likability[1];
    }

    public int getcounter() {
            return likability[2];
    }
}

and AndroidManifest xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://ift.tt/nIICcg"
package="gr.com.plaza.stackoverflowquestion">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SecondActivity"></activity>
</application>

</manifest>

sorry for the long post but I'm desperate

the only thing I've thought so far is a boolean that will make random generate a new number only if it is true but i don't know if that would work and also i'm not sure how to do it either. I want to thank everyone in advance




Aucun commentaire:

Enregistrer un commentaire