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

select all کردن چک باکس ها

alireza  11 سال پیش  11 سال پیش
0 0

دوستان میشه کسی من رو راهنمایی بکنه که اگه بخوام با کلیک روی یه گزینه تمام چک باکس های لیست ویوی ما به حالت انتخاب در بیاد باید چکار کنم ؟

من سعی کردم همچین کاری رو بکنم که با زدن یه کلیک تمام ایتم ها لیست ویو در یک ارایه قرار بگیره و مقدار 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  کردی و تیک همه خورد بایستی وقتی روی ایتمی کلیک شد این ایتم از انتخاب خارج میشه این هم موضوعی که باید در نظر گرفته بشه 

ممنون میشم از دوستان و اساتید راهنمایی کنند من رو پروژه من تمامه و اماده تحویل و ارائه ولی هنوز نتونستم این مساله رو حل کنم و این قابلیت رو اضافه کنم به برنامه ... 

 برای این سوال پاسخی وجود ندارد.

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