检查传输列表视图中的项目到另一个listivew在Android的按钮点击 [英] transfer checked items in listview to another listivew on button click in android

查看:314
本文介绍了检查传输列表视图中的项目到另一个listivew在Android的按钮点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用customAdapter.class数据列表视图现在我想的是,在列表视图转移检查项目secondActivity按钮点击...

  btest.setOnClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            SparseBooleanArray检查= listView.getCheckedItemPositions();
            ArrayList的<模型与GT; MYLIST =新的ArrayList<模型与GT;();
             的for(int i = 0; I< checked.size();我++){
                    INT位置= checked.keyAt(ⅰ);
                    如果(checked.valueAt(i))的
                        // ListView控件=新的ArrayList<模型与GT;();
                        mylist.add(将String.valueOf(adapter.getItem(位置)));                }
                的String [] =输出新的String [mylist.size()];
                的for(int i = 0; I< mylist.size();我++){
                    输出[I] =(mylist.get(I));                }
                意向意图=新意图(getApplicationContext(),ResultActivity.class);
                束B =新包();
                b.putStringArray(selectedItems,输出);
                // b.putStringArrayList(SelectedItems:列表);
                // b.putString(selectedItems,将String.valueOf(输出));
                intent.putExtras(二);
                startActivity(意向); * /
            }
    });

这就是我得到在另一个列表视图该数据的第二个活动

 保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.result);
    束B = getIntent()getExtras()。
    的String []结果= b.getStringArray(selectedItems);
    ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,结果);
    lv.setAdapter(适配器);
}


解决方案

我解决了通过节约检查从列表视图项目上按一下按钮的SQLite。另一个按钮,打开新的活动,并呼吁所选项目的SQLite这种方式...
oncheckchange添加和删除在一个ArrayList项目,并把这种在onbutton单击像这样...

 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
    ViewHolder视图= NULL;
    支持支持=(支援)this.getItem(位置);
    如果(convertView == NULL){
        LayoutInflater吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.view_items,NULL);
        鉴于=新ViewHolder();
        view.tvInfo =(TextView中)convertView.findViewById(R.id.tvInfo);
        view.cb =(复选框)convertView.findViewById(R.id.cb);
        convertView.setTag(视图);        view.cb.setOnCheckedChangeListener(新CompoundButton.OnCheckedChangeListener(){
            @覆盖
            公共无效onCheckedChanged(CompoundButton buttonView,布尔器isChecked){
                复选框CB =(复选框)buttonView;
                支持支持=(支援)cb.getTag();
                support.setSelected(cb.isChecked());
                如果(器isChecked){
                    selList.add(support.status);
                    selID.add(support.id);
                    selType.add(support.type);
                  // Toast.makeText(CustomAdapter.this已点击复选框:+ cb.getText()+是+ cb.isChecked(),Toast.LENGTH_LONG).show();
                }其他{
                    selList.remove(support.status);
                    selID.remove(support.id);
                    selType.remove(support.type);
                }
            }
        });
    }其他{
        鉴于=(ViewHolder)convertView.getTag();
        view.cb = view.getCb();
        view.tvInfo = view.getTvInfo();
    }
    view.cb.setTag(支持);
    支持= list.get(位置);
    字符串ID = support.getId();
    字符串状态= support.getStatus();
    字符串类型= support.getType();
    view.cb.setChecked(support.isSelected());
   // view.tvInfo.setText(ID +,+状态+,+型);
    view.tvInfo.setText(状态);
    返回convertView;
}

这是编码按钮添加到数据库

  btest.setOnClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
           handler.addSelected(adapter.selList,adapter.selID,adapter.selType);

这是如何插入到sqlite的..

 公共无效addSelected(ArrayList的<串GT; selList,ArrayList的<串GT; selID,ArrayList的<串GT; selType){    INT大小= selID.size();    SQLiteDatabase分贝= getWritableDatabase();
    尝试{
       的for(int i = 0; I<大小;我++){
            ContentValues​​ CV =新ContentValues​​();
          // cv.put(KEY_ID,selID.get(ⅰ)的ToString());
           cv.put(KEY_ID,selID.get(I));
             cv.put(KEY_STATUS,selList.get(I));
           cv.put(key_type的,selType.get(I));
            Log.d(添加,+ CV);
            db.insertOrThrow(TABLE_SELECTED,空,CV);
        }
        db.close();
    }赶上(例外五){
        Log.e(问题,E +);
    }
}

和从数据库取回这样

 公开的ArrayList<串GT; getSelected(){
    SQLiteDatabase分贝= this.getReadableDatabase();
    ArrayList的<串GT;结果= NULL;
    尝试{
        结果=新的ArrayList<串GT;();
      //查询字符串=SELECT * FROM+ TABLE_SELECTED;
        查询字符串=SELECT+ KEY_ID +FROM+ TABLE_SELECTED;        光标C = db.rawQuery(查询,NULL);
        如果(!c.isLast()){
            如果(c.moveToFirst()){
                做{
                    字符串sel_name = c.getString(c.getColumnIndex(_ ID));
                    result.add(sel_name);
                    Log.d(增加,sel_name);
                }而(c.moveToNext());
            }
        }
        c.close();
        db.close();
    }赶上(例外五){
        Log.e(没有什么是显示E +);
    }
    返回结果;
}

I have a listview with data using customAdapter.class now what i want is that to transfer checked items in listview to secondActivity on button click...

 btest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SparseBooleanArray checked = listView.getCheckedItemPositions();
            ArrayList<Model> mylist = new ArrayList<Model>();
             for (int i = 0; i < checked.size(); i++) {
                    int position = checked.keyAt(i);
                    if (checked.valueAt(i))
                        // listView = new ArrayList<Model>();
                        mylist.add(String.valueOf(adapter.getItem(position)));

                }
                String[] output = new String[mylist.size()];
                for (int i = 0; i < mylist.size(); i++) {
                    output[i] = (mylist.get(i));

                }
                Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
                Bundle b = new Bundle();
                b.putStringArray("selectedItems", output);
                // b.putStringArrayList("SelectedItems: ",list);
                // b.putString("selectedItems", String.valueOf(output));
                intent.putExtras(b);
                startActivity(intent);*/
            }
    });

and this is the second activity where i am getting that data in another listview

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.result);
    Bundle b = getIntent().getExtras();
    String[] result = b.getStringArray("selectedItems");
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, result);
    lv.setAdapter(adapter);
}

解决方案

i solve by saving checked items from listview to sqlite on button click. another button to open new activity and call selected items sqlite this way... oncheckchange add and remove items in an arraylist and call this in onbutton click like this way...

  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder view = null;
    Support support = (Support) this.getItem(position);
    if (convertView == null){
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.view_items, null);
        view = new ViewHolder();
        view.tvInfo = (TextView) convertView.findViewById(R.id.tvInfo);
        view.cb = (CheckBox) convertView.findViewById(R.id.cb);
        convertView.setTag(view);

        view.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                CheckBox cb = (CheckBox) buttonView;
                Support support = (Support) cb.getTag();
                support.setSelected(cb.isChecked());
                if (isChecked){
                    selList.add(support.status);
                    selID.add(support.id);
                    selType.add(support.type);
                  //  Toast.makeText(CustomAdapter.this, "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show();
                }else {
                    selList.remove(support.status);
                    selID.remove(support.id);
                    selType.remove(support.type);
                }
            }
        });
    }else{
        view = (ViewHolder) convertView.getTag();
        view.cb = view.getCb();
        view.tvInfo = view.getTvInfo();
    }
    view.cb.setTag(support);
    support = list.get(position);
    String id = support.getId();
    String status = support.getStatus();
    String type = support.getType();
    view.cb.setChecked(support.isSelected());
   // view.tvInfo.setText(id + "," + status + "," + type);
    view.tvInfo.setText(status);
    return convertView;
}

this is button coding to add to db

 btest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           handler.addSelected(adapter.selList, adapter.selID, adapter.selType);

and this is how to insert to sqlite..

public void addSelected(ArrayList<String> selList, ArrayList<String> selID, ArrayList<String> selType) {

    int size = selID.size();

    SQLiteDatabase db = getWritableDatabase();
    try{
       for (int i = 0; i < size ; i++){
            ContentValues cv = new ContentValues();
          //  cv.put(KEY_ID, selID.get(i).toString());
           cv.put(KEY_ID, selID.get(i));
             cv.put(KEY_STATUS, selList.get(i));
           cv.put(KEY_TYPE, selType.get(i));
            Log.d("Added ",""+ cv);
            db.insertOrThrow(TABLE_SELECTED, null, cv);
        }
        db.close();
    }catch (Exception e){
        Log.e("Problem", e + " ");
    }
}

and get back from db like this

 public ArrayList<String> getSelected() {
    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<String> result = null;
    try{
        result = new ArrayList<String>();
      //  String query = "SELECT * FROM " + TABLE_SELECTED;
        String query = "SELECT " + KEY_ID + " FROM " + TABLE_SELECTED;

        Cursor c = db.rawQuery(query, null);
        if (!c.isLast()){
            if (c.moveToFirst()){
                do{
                    String sel_name = c.getString(c.getColumnIndex("_id"));
                    result.add(sel_name);
                    Log.d("Added ", sel_name);
                }while (c.moveToNext());
            }
        }
        c.close();
        db.close();
    }catch (Exception e){
        Log.e("Nothing is to show", e + " ");
    }
    return result;
}

这篇关于检查传输列表视图中的项目到另一个listivew在Android的按钮点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆