#android #onclick
#Android #onclick
Вопрос:
У меня есть бизнес-каталог, в котором указаны веб-ссылки на разные компании. Все детали бизнес-листинга извлекаются через веб-сервис. Когда пользователь нажимает на любую ссылку, он / она получает один кредит или балл. Существует несколько веб-ссылок, так как это бизнес-каталог.Поскольку за определенные баллы начисляются награды, пользователи могут злоупотреблять этим, чтобы получить дополнительные баллы, поэтому я хочу сохранить эту ссылку доступной для перехода, но баллы начисляются на его / ее аккаунт только два раза в день, то есть один раз через 12 часов.Например, если пользователь нажмет на ссылку в 12:00, в его / ее аккаунте будет добавлено 1 очко, а следующее очко будет добавлено за ту же ссылку onclick в 12:00, но в то же время остальные ссылки должны работать, а очки должны добавляться вего / ее учетная запись, если он / она нажимает на нее в первый раз.Например, есть ссылки:-
- www.abc.com
- www.xyz.com
Если я нажму на ссылку 1 в 12:00, в мою учетную запись будет добавлена точка, и в следующий раз точка будет добавлена в 12:00, если я снова нажму на эту ссылку. После нажатия на ссылку 1, если я нажму на ссылку 2, тот же процесс должен продолжаться. Как я могу это сделать?
Ниже прилагается код для действия, по которому извлекаются бизнес-данные вместе с веб-ссылками:-
общедоступный класс BussinessDetailsActivity расширяет FragmentActivity{
LinearLayout layMap, layWeb, layDes;
TextView tvMap, tvWeb, tvDes;
ImageView imgIcon;
SponcerDetailsModel model;
public static boolean isAdd = false;
private AppPreferences mPreferences;
ImageButton iBtnBack;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.business_details);
imgIcon = (ImageView) findViewById(R.id.icon_bussiness);
iBtnBack = (ImageButton) findViewById(R.id.ibtn_back);
layMap = (LinearLayout) findViewById(R.id.lay_map);
layWeb = (LinearLayout) findViewById(R.id.lay_web);
tvMap = (TextView) findViewById(R.id.tv_map);
tvWeb = (TextView) findViewById(R.id.tv_web);
tvDes = (TextView) findViewById(R.id.tv_description);
mPreferences = new AppPreferences(this);
isAdd = false;
model = (SponcerDetailsModel)getIntent().getSerializableExtra("OBJ");
iBtnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
tvMap.setText(model.getAddress());
tvDes.setText(model.getDescription());
tvWeb.setText(model.getWebsite());
Glide.with(this).load(model.getImage()).centerCrop().into(imgIcon);
layMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("geo:0,0?q=" model.getMap_link());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
layWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(model.getWebsite() != null amp;amp; !model.getWebsite().equalsIgnoreCase("")) {
AlertDialog.Builder builder = new AlertDialog.Builder(BussinessDetailsActivity.this);
builder.setMessage("Thanks for supporting our Sponsors")
.setTitle("Alert")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
String url = model.getWebsite();
if(!url.contains("http://")){
url = "http://" url;
}
isAdd = true;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
AlertDialog alert = builder.create();
alert.show();
}else{
Toast.makeText(BussinessDetailsActivity.this, "Website is not available.", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onResume() {
super.onResume();
if(isAdd){
isAdd = false;
new addpoints()
.execute(UtilConnection.Rewards_webservices
"pointsadd.php?");
}
}
public class addpoints extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
String points, msg;
@Override
protected void onPreExecute() {
super.onPreExecute();
if (ConnectionDetector.isConnectingToInternet(BussinessDetailsActivity.this)) {
pDialog = new ProgressDialog(BussinessDetailsActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
} else {
UtilConnection.dialog(BussinessDetailsActivity.this, "" ConnectionDetector.NETWORK_MESSAGE);
cancel(true);
}
}
@Override
protected String doInBackground(String... urls) {
// TODO Auto-generated method stub
try {
ServiceHandler handler = new ServiceHandler();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("id_user", URLEncoder
.encode(mPreferences.getStringPreference(AppPreferences.USER_ID))));
nameValuePairs.add(new BasicNameValuePair("points", URLEncoder.encode("1")));
String str = handler.makeServiceCall(urls[0],
ServiceHandler.POST, nameValuePairs);
System.err.println("" str);
JSONObject jsono = new JSONObject(str);
msg = jsono.getString("msg");
points = jsono.getString("points");
Log.e("point=",points);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
pDialog.cancel();
if (points != null) {
UtilConnection.dialog(BussinessDetailsActivity.this, "Congratulations, you have earned credits");
mPreferences.setStringPreference(AppPreferences.USER_POINTS, points);
} else {
UtilConnection.dialog(BussinessDetailsActivity.this, "" msg);
}
}
}
}
И мой XML-файл:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e8e8e8"
android:orientation="vertical">
<LinearLayout
android:id="@ id/lay_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/header_bg"
android:elevation="3dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageButton
android:id="@ id/ibtn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:padding="8dp"
android:src="@drawable/ic_keyboard_backspace" />
<ImageView
android:id="@ id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/padding_48"
android:background="@null"
android:src="@drawable/logo" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@ id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:id="@ id/icon_bussiness"
android:layout_width="match_parent"
android:layout_height="200dp"
android:elevation="5dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@ id/lay_web"
android:paddingTop="8dp"
android:orientation="horizontal">
<ImageView
android:id="@ id/icon_website"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@null"
android:src="@drawable/ic_public_black" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@ id/tv_web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:paddingBottom="8dp"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/gray" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@ id/lay_map"
android:paddingTop="8dp"
android:orientation="horizontal">
<ImageView
android:id="@ id/icon_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@null"
android:src="@drawable/ic_place_black" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@ id/tv_map"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:paddingBottom="8dp"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/gray" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:orientation="horizontal">
<ImageView
android:id="@ id/icon_des"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@null"
android:src="@drawable/ic_description" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@ id/tv_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/gray" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Комментарии:
1. Вы можете сохранить дату и время в общих настройках или в локальной базе данных после того, как пользователь нажал на ссылку, и со второго раза, когда он нажимает, просто проверьте условие даты и времени и перейдите к пункту, если он превышает 12 часов, если вы разместите здесь свой код, который был бы полезен для мы должны помочь вам.
2. Вы должны создать службу rest, которая отслеживает переход по ссылке для каждого UID вместе со временем и обновляет
link_clicked
счетчик, когда текущее время>last_updated_time
43200000 мс.