دریافت نظر کاربران بر اساس تعداد ستاره، با استفاده از عنصر RatingBar ، در برنامه نویسی اندروید
در این مبحث قصد داریم که یک برنامه اندروید بسازیم که نظر کاربران را بر اساس تعداد ستاره، دریافت کرده و نمایش می دهد. برای این منظور، از عنصر RatingBar استفاده خواهیم کرد :
هنگام انتخاب یک رتبه (تعداد ستاره) توسط کاربر، عدد مربوط به انتخاب کاربر در یک TextView نمایش داده می شود، علاوه بر این، یک Button تعریف خواهیم کرد که وقتی بر روی آن اشاره می کنیم، انتخاب کاربر، به صورت یک پیام کوتاه، نمایش داده می شود (با استفاده از روش Toast.makeText).
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام RatingBar می سازیم (نام package را برابر com.kelidestan.ratingbar انتخاب می کنیم. نام Activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم) :
در فایل activity_main.xml ، کدهای زیر را می نویسیم :
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/lblRateMe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rate Me"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="1.0"
android:rating="0.0" />
<Button
android:id="@+id/btnSubmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/lblResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result : "
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/txtRatingValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</LinearLayout>
دقت شود که تعداد ستاره هایی که می خواهیم برای عنصر RatingBar نمایش داده شود را باید در مشخصه numStars از RatingBar تعیین کنیم :
همچنین رتبه ای (تعداد ستاره) که در ابتدا به صورت پیش فرض به کاربر نمایش داده می شود، توسط مشخصه rating تعیین می شود :
بنابراین شکل گرافیکی فایل activity_main.xml به صورت زیر خواهد بود :
اکنون کدهای فایل MainActivity.java را به صورت زیر می نویسیم :
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
public RatingBar ratingBar;
public TextView txtRatingValue;
public Button btnSubmit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnRatingBar();
addListenerOnButton();
}
public void addListenerOnRatingBar() {
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
txtRatingValue = (TextView) findViewById(R.id.txtRatingValue);
//if rating value is changed,
//display the current rating value in the result (textview) automatically
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
txtRatingValue.setText(String.valueOf(rating));
}
});
}
public void addListenerOnButton() {
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
//if click on me, then display the current rating value.
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
String.valueOf(ratingBar.getRating()),
Toast.LENGTH_SHORT).show();
}
});
}
}
پروژه اندروید آماده است و می توانید آن را به روش دلخواه خود امتحان کنید. من آن را بر روی یک گوشی اندروید نصب می کنم. ابتدا صفحه زیر نمایش داده می شود :
چون تعداد ستاره ها را به صورت پیش فرض، برابر 0 انتخاب کردیم، بنابراین هیچ ستاره ای در RatingBar به صورت رنگی نمایش داده نشده است. اکنون بر روی ستاره دوم اشاره می کنیم :
مشاهده می کنید که دو ستاره رنگی شده است و در TextView ، مقدار 2 نمایش داده شده است. اکنون بر روی Button کلیک می کنیم :
یک پیام کوتاه که دارای عنوان 2.0 است، به مدت چند ثانیه، نمایش داده می شود.
فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :