PDA

View Full Version : پیاده سازی DownloadManager در ArrayAdapter



hamedjj
شنبه 27 اردیبهشت 1393, 01:45 صبح
سلام
کلاس DownloadManager چطور arrayadapter در لیست ویو پیاده سازی میشه؟
تو بعضی قسمت ها ارور میگیره.

مثلا :
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);


کلاس MyAdapter :


public class MyAdapter extends ArrayAdapter<String>{

private final Context context;
private final String[] values;
Context b;

public MyAdapter(Context context, String[] values) {
super(context, R.layout.item, values);
this.context = context;
this.values = values;
b= (Context) context;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_S ERVICE);
View rootview = inflater.inflate(R.layout.item, parent, false);

TextView tv1 = (TextView)rootview.findViewById(R.id.txt_name);
TextView tv2 = (TextView)rootview.findViewById(R.id.txt_numer);
ImageView img = (ImageView) rootview.findViewById(R.id.imageView1);
CheckBox repeatChkBx = (CheckBox) rootview.findViewById(R.id.favorite_check);
TextView id = (TextView)rootview.findViewById(R.id.id);
final Cursor cur = Database(position);
if (cur != null) {
cur.moveToFirst();}

id.setText(String.valueOf(cur.getString(cur.getCol umnIndex("like"))));
id.setVisibility(View.GONE);

String me = cur.getString(cur.getColumnIndex("like"));
if (me.equals("yes")) {
repeatChkBx.setChecked(true);
}

tv1.setText(cur.getString(cur.getColumnIndex("name")));
tv2.setText(cur.getString(cur.getColumnIndex("category")));

repeatChkBx.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
CheckBox chk = (CheckBox) v.findViewById(R.id.favorite_check);
MyDatabase MyDatabase = new MyDatabase(context);
SQLiteDatabase mydb = MyDatabase.getWritableDatabase();

if (chk.isChecked()) {
ContentValues cv = new ContentValues();
cv.put("like", "yes");
mydb.update("list", cv, "id ="+ values[position], null);
}else {
ContentValues cv = new ContentValues();
cv.put("like", "no");
mydb.update("list", cv, "id ="+ values[position], null);
}
}
});

return rootview;
}

public Cursor Database(final int position) {
MyDatabase MyDatabase = new MyDatabase(context);
SQLiteDatabase mydb = MyDatabase.getReadableDatabase();
Cursor cur = mydb.rawQuery("SELECT name,category,like,url FROM list WHERE id='"+values[position]+"'", null);
return cur;
}

}




کلاس MainActivity :


public class MainActivity extends ActionBarActivity {

public ListView listview;

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

MyDatabase MyDatabase = new MyDatabase(this);
SQLiteDatabase mydb = MyDatabase.getReadableDatabase();
Cursor c = mydb.rawQuery("select id from list" , null);

String[] array = new String[c.getCount()];
int i = 0;
if (c.moveToFirst()) {
do {
try {
array[i] = c.getString(c.getColumnIndex("id"));
i++;
} catch (Exception e) {
e.printStackTrace();
}
} while (c.moveToNext());
}

ListView list = (ListView) findViewById(R.id.listView1);
list.setAdapter(new MyAdapter(this, array));

}
}

hamedjj
شنبه 27 اردیبهشت 1393, 01:55 صبح
من دارم رو این پروژه نمونه برنامه های کوچک کار میکنم که کلاس های بالا ماله همون پروژه است:
http://barnamenevis.org/showthread.php?401729-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF&p=2016418&viewfull=1#post2016418

hamedjj
شنبه 27 اردیبهشت 1393, 21:30 عصر
کل کلاس download manager به این صورت است :


mgr=(DownloadManager) getSystemService(DOWNLOAD_SERVICE);
registerReceiver(onComplete,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPL ETE));
registerReceiver(onNotificationClick,new IntentFilter(DownloadManager.ACTION_NOTIFICATION_C LICKED));

mp = new MediaPlayer();

protected void Download() {

Cursor c = database();

name = "hamed"+c.getString(c.getColumnIndex("id"))+".mp3";
Uri uri=Uri.parse(c.getString(c.getColumnIndex("url")));
lastDownload=mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NE TWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("DOWNLOAD")
.setDescription("Please Wait...")
.setDestinationInExternalPublicDir("/Download/",name));
Toast.makeText(this, "آغاز دانلود در نوتیفیکیشن دستگاه شما", Toast.LENGTH_SHORT).show();

}

/////////////////////////// نمایش پیغامهای وضعیت دانلود
private CharSequence statusMessage(Cursor c) {
// TODO Auto-generated method stub
String msg="???";
switch(c.getInt(c.getColumnIndex(DownloadManager.C OLUMN_STATUS))) {
case DownloadManager.STATUS_FAILED:
msg="خطا در دانلود!";
break;
case DownloadManager.STATUS_PAUSED:
msg="توقف دانلود!";
break;
case DownloadManager.STATUS_PENDING:
msg="آماده شدن برای دانلود";
break;
case DownloadManager.STATUS_RUNNING:
msg="در حال بارگیری";
break;
case DownloadManager.STATUS_SUCCESSFUL:
msg="دانلود کامل شد";
break;
default:
msg="دانلودی به چشم نمیخورد";
break;
}
return(msg);
}
///////////////////////////////وقتی دانلود کامل شد این تابع اجرا میشود
BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
Toast.makeText(getApplicationContext(), "دانلود کامل شد", Toast.LENGTH_SHORT).show();

}
};
////////////////////////////// وقتی نوار دانلود در نوتیفیکیشن را لمس کنیم
BroadcastReceiver onNotificationClick=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
display();
}

private CharSequence display() {
// TODO Auto-generated method stub
Cursor c=mgr.query(new DownloadManager.Query().setFilterById(lastDownload ));
if (c==null) {
Toast.makeText(getApplicationContext(), "فایلی یافت نشد", Toast.LENGTH_SHORT).show();
}
else {
c.moveToFirst();
Toast.makeText(getApplicationContext(), statusMessage(c), Toast.LENGTH_SHORT).show();
}

return null;
}
};

protected void start(String name2) {
// TODO Auto-generated method stub
try {
mp.reset();
String mp3Uri = Environment.getExternalStorageDirectory()+ "/Download/"+name2;
mp.setDataSource(mp3Uri);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

dasssnj
یک شنبه 28 اردیبهشت 1393, 10:37 صبح
سلام
کلاس DownloadManager چطور arrayadapter در لیست ویو پیاده سازی میشه؟
تو بعضی قسمت ها ارور میگیره.

مثلا :
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);




اینطوری بنویسش :

DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE) ;

و context رو از سازنده ی کلاست به عنوان پارامتر بگیر.