select all کردن چک باکس ها
دوستان میشه کسی من رو راهنمایی بکنه که اگه بخوام با کلیک روی یه گزینه تمام چک باکس های لیست ویوی ما به حالت انتخاب در بیاد باید چکار کنم ؟
من سعی کردم همچین کاری رو بکنم که با زدن یه کلیک تمام ایتم ها لیست ویو در یک ارایه قرار بگیره و مقدار done انها true بشه اما یه مشکل پیش میاد که وقتی ایتم ها رو به صورت تکی سلکت می کنم با اسکرول کردن از انتخاب خارج می شن و اگه کد مربوط به selectall رو بردارم مشکل سلکت تکی نخوام داشت و در کل با انجام این کار دستی برای sellect all خب خیلی حالت های دیگه ای پیش میاد و بعضا اونها هم اعمال نمیشه
ممنون میشم کسی راهنمایی کنه ایا راه تمیزتر و دقیق تری هست که بتونم select all کنم ؟
این کد مربوط به ادپتر من هست :
package raeisi.hosein.course.app.note;
import java.io.File;
import java.util.ArrayList;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
public class AdapterEdit extends ArrayAdapter<StructTask> {
public static ArrayList<String> Title = new ArrayList<String>();
public static ArrayList<StructTask> deletes = new ArrayList<StructTask>();
public static long id_url;
public AdapterEdit(ArrayList<StructTask> array) {
super(G.context, R.layout.adapter_edit, array);
G.inflater = LayoutInflater.from(G.context);
}
private static class ViewHolder {
public TextView txtCreater;
public TextView txtTitle;
public TextView txtDate;
public ImageView imgPreview;
public CheckBox chkDelete;
public ViewGroup layoutTotal;
public TextView txtNews;
public TextView txtId;
public ViewHolder(View view) {
String fontPath = "font/bbc.ttf";
Typeface tf = Typeface.createFromAsset(G.context.getAssets(), fontPath);
txtCreater = (TextView) view.findViewById(R.id.txtCreater);
txtTitle = (TextView) view.findViewById(R.id.txtTitle);
txtDate = (TextView) view.findViewById(R.id.txtDate);
imgPreview = (ImageView) view.findViewById(R.id.imgPreview);
chkDelete = (CheckBox) view.findViewById(R.id.chkDelete);
layoutTotal = (ViewGroup) view.findViewById(R.id.layoutTotal);
txtNews = (TextView) view.findViewById(R.id.txtNews);
txtId = (TextView) view.findViewById(R.id.txtId);
txtCreater.setTypeface(tf);
txtTitle.setTypeface(tf);
txtDate.setTypeface(tf);
txtNews.setTypeface(tf);
}
public void fill(final ArrayAdapter<StructTask> adapters, final StructTask item, final int position) {
txtCreater.setText(item.creater);
txtTitle.setText(item.title);
txtId.setText("" + item.id);
if (item.thumbnail.trim().equals("t_")) {
imgPreview.setVisibility(View.GONE);
} else {
imgPreview.setVisibility(View.VISIBLE);
}
txtDate.setText(item.publicationDate);
chkDelete.setChecked(item.done);
layoutTotal.setBackgroundColor(Color.parseColor("#4a5f92"));
txtId.setVisibility(View.GONE);
layoutTotal.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
final Dialog dialog = new Dialog(G.currentActivity);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_test);
Button btnOk = (Button) dialog.findViewById(R.id.btnOk);
Button btnCancel = (Button) dialog.findViewById(R.id.btnCancel);
layoutTotal.setBackgroundColor(Color.parseColor("#bec4d5"));
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
dialog.dismiss();
layoutTotal.setBackgroundColor(Color.parseColor("#ffffff"));
}
});
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
G.database.execSQL("DELETE FROM task WHERE task_id = '" + item.id + "'");
adapters.remove(item);
dialog.dismiss();
layoutTotal.setBackgroundColor(Color.parseColor("#ffffff"));
}
});
dialog.show();
return false;
}
});
layoutTotal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
G.sendId(txtId.getText().toString());
Intent intent = new Intent(G.currentActivity, ActivityShow.class);
intent.putExtra("POSITION", position);
G.currentActivity.startActivity(intent);
ActivityEdit.number1 = false;
}
});
if (ActivityEdit.number1 == false) {
chkDelete.setVisibility(View.GONE);
item.done = false;
} else {
chkDelete.setVisibility(View.VISIBLE);
}
chkDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox = (CheckBox) view;
item.done = checkBox.isChecked();
if (item.done) {
layoutTotal.setBackgroundColor(Color.parseColor("#bec4d5"));
chkDelete.setButtonDrawable(R.drawable.checkboxdone);
Title.add(txtId.getText().toString());
deletes.add(item);
}
else {
layoutTotal.setBackgroundColor(Color.WHITE);
chkDelete.setButtonDrawable(R.drawable.checkbox);
Title.remove(new String(txtId.getText().toString()));
deletes.remove(item);
}
}
// }
});
if (item.done) {
layoutTotal.setBackgroundColor(Color.parseColor("#bec4d5"));
chkDelete.setButtonDrawable(R.drawable.checkboxdone);
} else {
layoutTotal.setBackgroundColor(Color.WHITE);
chkDelete.setButtonDrawable(R.drawable.checkbox);
Title.remove(new String(txtId.getText().toString()));
deletes.remove(item);
}
String news = (item.news);
if (news.length() > 100) {
news = (String) news.subSequence(0, 100);
}
txtNews.setText(news);
String filename = item.thumbnail;
File imageFile = new File(G.DIR_FINAL + "/" + filename);
if ( !imageFile.exists()) {
imgPreview.setImageBitmap(null);
DownloadManager.addToDownloadList(item.thumbnail, item.id);
return;
}
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath(), options);
imgPreview.setImageBitmap(bitmap);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructTask item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_edit, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
و این هم کد مربوط به کلیک delete هست که با کلیک روی اون ایتم هایی که sellect کردم از ادپتر و از دیتا بیسی که دارم حذف میشه
imgDeleteIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < AdapterEdit.Title.size(); i++) {
G.database.execSQL("DELETE FROM task WHERE task_id = '" + AdapterEdit.Title.get(i) + "'");
adapters.remove(AdapterEdit.deletes.get(i));
adapters.notifyDataSetChanged();
}
}
});
thread.start();
layoutDelete.setVisibility(View.GONE);
layoutSelect.setVisibility(View.GONE);
layoutTitle.setVisibility(View.VISIBLE);
number1 = false;
}
});
حالا من می خوام ببینم چطور میشه به این ارایه ای که تعریف کردم که ایتم هایی که select میشه توش ریخته میشه و چک باکس ام تیک می خوره و رنگ layout من هم تغییر می کنه با کلیک روی یه دکمه همه ایتم ها اضافه بشن به این ارایه و چک باکس ها تیک بخورن من کدی نوشتم که با زدن کلیک sellect all همه عناصر رو از دیتا بیسم که لیست ویو رو تشکیل داده بخونه و به ارایه اضافه کنه و کار هم کرد وقتی delete رو می زنی پاک میشه اما وقتی اضافه میشه تیک چک باکس ها زده نمی شه و مشکل دیگه اینکه وقتی sellct all کردی و تیک همه خورد بایستی وقتی روی ایتمی کلیک شد این ایتم از انتخاب خارج میشه این هم موضوعی که باید در نظر گرفته بشه
ممنون میشم از دوستان و اساتید راهنمایی کنند من رو پروژه من تمامه و اماده تحویل و ارائه ولی هنوز نتونستم این مساله رو حل کنم و این قابلیت رو اضافه کنم به برنامه ...
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .