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

کمک در ساخت علاقه مندی

یگانه  11 سال پیش  11 سال پیش
0 0

سلام میدونم تو انجمن خیلی راجع به این مورد بحث شده

 

این سورس استاد تو آموزش Android Market هستش من میخاستم یک قسمت علاقه مندی بسازم اگه میشه بگین به همین سورس استاد توی قسمت دیتابیس و سایر قسمت ها چه چیزهایی رو اضافه کنم خواهش میکنم جواب بدین میدونم وقتتون گرفته میشه

 package project;

import java.io.File;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.os.Handler;
import android.view.LayoutInflater;


public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static final Handler HANDLER = new Handler();
public static Activity currentActivity;

public static StructApplication selectedApplication;

public static SQLiteDatabase database;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_APP = DIR_SDCARD + "/android-market";
public static final String DIR_TEMP = DIR_APP + "/temp";
public static final String DIR_APK = DIR_APP + "/apk";
public static final String DIR_FINAL = DIR_APP + "/final";

public static final int DOWNLOAD_BUFFER_SIZE = 8 * 1024;


@Override
public void onCreate() {
super.onCreate();

context = getApplicationContext();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

new File(DIR_APP).mkdirs();
new File(DIR_APK).mkdirs();
new File(DIR_TEMP).mkdirs();
new File(DIR_FINAL).mkdirs();

manageDatabase();

DownloadManager.initialize();
}


private void manageDatabase() {
database = SQLiteDatabase.openOrCreateDatabase(DIR_APP + "/database.sqlite", null);
database.execSQL("CREATE TABLE IF NOT EXISTS app (" +
"app_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , " +
"app_name TEXT, " +
"app_price INTEGER, " +
"app_logoUrl TEXT, " +
"app_ratingValue REAL, " +
"app_author TEXT, " +
"app_votes INTEGER, " +
"app_filesize INTEGER, " +
"app_versionName TEXT, " +
"app_installs INTEGER, " +
"app_description TEXT, " +
"app_phoneNumber TEXT, " +
"app_email TEXT " +
")");
}
}
 package project;

import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import com.uncocoder.course.app.android_market.R;


public class ActivityApplicationsList extends EnhancedActivity {

private ListView list;
private Button btnSortPrice;
private Button btnSortRate;
private Button btnSortInstalls;
private Button btnAll;
private Button btnFree;
private Button btnPaid;
private AdapterApplication adapter;

private ArrayList<StructApplication> applications = new ArrayList<StructApplication>();

private String lastSort = "app_ratingValue DESC";
private String lastFilter = "1=1";


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

list = (ListView) findViewById(R.id.list);
btnSortPrice = (Button) findViewById(R.id.btnSortPrice);
btnSortRate = (Button) findViewById(R.id.btnSortRate);
btnSortInstalls = (Button) findViewById(R.id.btnSortInstalls);
btnAll = (Button) findViewById(R.id.btnAll);
btnFree = (Button) findViewById(R.id.btnFree);
btnPaid = (Button) findViewById(R.id.btnPaid);

btnSortPrice.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastSort = "app_price ASC";
populateFromServer();
}
});

btnSortRate.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastSort = "app_ratingValue DESC";
populateFromServer();
}
});

btnSortInstalls.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastSort = "app_installs DESC";
populateFromServer();
}
});

btnAll.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastFilter = "1=1";
populateFromServer();
}
});

btnFree.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastFilter = "app_price=0";
populateFromServer();
}
});

btnPaid.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
lastFilter = "app_price>0";
populateFromServer();
}
});

adapter = new AdapterApplication(applications);
list.setAdapter(adapter);

//populateFakeData();
//populateFromDatabase();
populateFromServer();
}


private void populateFromServer() {
String url = "http://192.168.1.10/market-server/service.php";
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("action", "read"));
params.add(new BasicNameValuePair("filter", lastFilter));
params.add(new BasicNameValuePair("sort", lastSort));

String result = Webservice.readUrl(url, params);
if (result != null) {
try {
applications.clear();
JSONArray apps = new JSONArray(result);
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructApplication application = new StructApplication();

application.name = object.getString("app_name");
application.price = object.getInt("app_price");
application.ratingValue = (float) object.getDouble("app_ratingValue");
application.logoUrl = object.getString("app_logoUrl");

application.file = object.getString("app_file");
application.author = object.getString("app_author");
application.description = object.getString("app_description");
application.email = object.getString("app_email");
application.phoneNumber = object.getString("app_phoneNumber");
application.filesize = object.getLong("app_filesize");
application.installs = object.getInt("app_installs");
application.versionName = object.getString("app_versionName");
application.votes = object.getInt("app_votes");

applications.add(application);
}

adapter.notifyDataSetChanged();
}
catch (JSONException e) {
e.printStackTrace();
}
}
}

/*
private void populateFromDatabase() {
applications.clear();
Cursor cursor = G.database.rawQuery("SELECT * FROM app WHERE " + lastFilter + " ORDER BY " + lastSort, null);
while (cursor.moveToNext()) {
StructApplication application = new StructApplication();
application.name = cursor.getString(cursor.getColumnIndex("app_name"));
application.price = cursor.getInt(cursor.getColumnIndex("app_price"));
application.ratingValue = cursor.getFloat(cursor.getColumnIndex("app_ratingValue"));

application.author = cursor.getString(cursor.getColumnIndex("app_author"));
application.description = cursor.getString(cursor.getColumnIndex("app_description"));
application.email = cursor.getString(cursor.getColumnIndex("app_email"));
application.phoneNumber = cursor.getString(cursor.getColumnIndex("app_phoneNumber"));
application.filesize = cursor.getLong(cursor.getColumnIndex("app_filesize"));
application.installs = cursor.getInt(cursor.getColumnIndex("app_installs"));
application.versionName = cursor.getString(cursor.getColumnIndex("app_versionName"));
application.votes = cursor.getInt(cursor.getColumnIndex("app_votes"));

applications.add(application);
}
cursor.close();

adapter.notifyDataSetChanged();
}
*/

/*
private void populateFakeData() {
for (int i = 0; i < 50; i++) {
StructApplication application = new StructApplication();
application.name = "Application #" + i;
application.price = (int) (Math.random() * 20 + 10) * 100;
application.ratingValue = (float) (Math.random() * 5);

application.author = "Author #" + i;
application.description = "Some Description in English\n" +
"Some Description in English\n" +
"Some Description in English\n" +
"Some Description in English\n" +
"Some Description in English\n" +
"Some Description in English\n";
application.email = "uncocoder@gmail.com";
application.phoneNumber = "xxx";
application.filesize = (int) (Math.random() * 9000000 + 1000000);
application.installs = (int) (Math.random() * 1000 + 0);
application.versionName = (int) (Math.random() * 8 + 1) + "." + (int) (Math.random() * 100 + 0);
application.votes = (int) (Math.random() * 1000 + 0);

applications.add(application);
}

adapter.notifyDataSetChanged();
}
*/
}
 package project;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import com.uncocoder.course.app.android_market.R;


public class AdapterApplication extends ArrayAdapter<StructApplication> {

public static HashMap<ImageView, String> imageMap = new HashMap<ImageView, String>();


public AdapterApplication(ArrayList<StructApplication> array) {
super(G.context, R.layout.adapter_application, array);
}


private static class ViewHolder {

public ViewGroup layoutRoot;
public TextView txtName;
public TextView txtPrice;
public ImageView imgLogo;
public RatingBar rating;


public ViewHolder(View view) {
layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot);
txtName = (TextView) view.findViewById(R.id.txtName);
txtPrice = (TextView) view.findViewById(R.id.txtPrice);
imgLogo = (ImageView) view.findViewById(R.id.imgLogo);
rating = (RatingBar) view.findViewById(R.id.rating);
}


public void fill(final ArrayAdapter<StructApplication> adapter, final StructApplication item, final int position) {
txtName.setText(item.name);
txtPrice.setText("" + item.price + " " + G.context.getResources().getString(R.string.application_detail_tooman));
rating.setRating(item.ratingValue);

String filename = HelperString.getFileName(item.logoUrl);
final File imageFile = new File(G.DIR_FINAL + "/" + filename);
if ( !imageFile.exists()) {
imgLogo.setImageBitmap(null);
DownloadManager.addToDownloadList(item.logoUrl, imgLogo);
}

BitmapFactory.Options options = new BitmapFactory.Options();
//options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath(), options);
imgLogo.setImageBitmap(bitmap);

layoutRoot.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
G.selectedApplication = item;

Intent intent = new Intent(G.currentActivity, ActivityApplicationDetail.class);
G.currentActivity.startActivity(intent);
}
});
}
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;

StructApplication item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_application, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.fill(this, item, position);
return convertView;
}
}
 package project;

public class StructApplication {

public String name;
public int price;
public String logoUrl;
public float ratingValue;

public String author;
public int votes;
public String file;
public long filesize;
public String versionName;
public int installs;
public String description;
public String phoneNumber;
public String email;
}

+1 0
اول از همه ی فیلد به دیتابیست اضافه کن بطور پیش فرض بهش صفر بده بعد تو برنامه واس هر ایتم ی دکمه بزار که اگه روش کلیک شد صفر بشه یک، بعد ی اکتیویتی برای مورد علاقه بساز داخلش فقط اون رکوردهای رو بخون که فیلدشون برابر یک باشه (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sadra  11 سال پیش
+1 0

این سورس رو بریز دور :D

اشالله اگه مشکلی نبود و وقت شد فردا یه آموزش ایجاد صفحه علاقه مندی ها هم میزارم

اما همینقدر بگم که شما به سورس دیتابیستون یه فیلدی به اسم Fav اضافه کنید و مقدارش رو صفر بدید، بعد توی کلاس دیتابیس 2تا تابع تعریف کنید یکی برای خوندن از دیتابیس برای فیلد fav و یکی نوشتن روی سورس . بعد توی کلاس اصلیتون یه دکمه بزارین برای اضافه شدن به علاقه مندی ها. هرموقع ظرف روش کلیک کرد فیل fav رو بکنه 1 دوباره کلیک کرد بشه 0

یه کلاس هم تعریف کنید که همه مواردی که fav شون 1 هست رو نشون بده توی یک لیست ویو.

فاتحه :P


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