2017-08-10 13 views
3

https://i.stack.imgur.com/vUpUM.pngnotifyDataSetChangedは()私はのlistItemsとしてListViewコントロールとチェックボックスを取っていたアンドロイド

にチェックボックスリストとBaseAdapterで働いていません。 Image Descriptionアクションマスターに表示されているように、親はAdd、Deleteは子です。親と子はコーディングで区切られています.Now Action Masterがチェックされ、AddとDeleteもチェックされていなければなりません。 それはすべてうまくいっていますが、主な問題はアクションマスターをクリックしたときにリスト全体が更新され、ADDとDELETEがチェックされるべきですが、UIに表示されません。それが記入されたときにここで

は私のコードです:ここ

dataAdapter = new MyCustomAdapter(AddRolePermission.this, listPageActionMaster); 
listView.setAdapter(dataAdapter); 

は、カスタムアダプタのコードです:

でも
class MyCustomAdapter extends BaseAdapter{ 


    AddRolePermission addRolePermission; 
    List<ClsPageActionMaster> list_role_master; 


    public MyCustomAdapter(AddRolePermission addRolePermission, List<ClsPageActionMaster> lstDemo) { 
     this.addRolePermission=addRolePermission; 
     this.list_role_master=lstDemo; 
    } 

    @Override 
    public int getCount() { 
     return list_role_master.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      /// 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = vi.inflate(R.layout.permissions_checkbox, null); 



      CheckBox checkBox1 = (CheckBox) convertView.findViewById(R.id.checkBox1); 
      TextView pageid = (TextView) convertView.findViewById(R.id.pageid); 

      ClsPageActionMaster ObjPageAction = new ClsPageActionMaster(); 
      ObjPageAction = list_role_master.get(position); 


      Log.v("RolePermissionData", "BEFORE CHECKED"); 
      Log.v("RolePermissionData", "CheckBox-" + String.valueOf(ObjPageAction.getSelected())); 
      Log.v("RolePermissionData", "PageID-" + String.valueOf(ObjPageAction.getPageid())); 
      Log.v("RolePermissionData", "PageName-" + String.valueOf(ObjPageAction.getPage_name())); 
      Log.v("RolePermissionData", "type" + String.valueOf(ObjPageAction.getType())); 
      Log.v("RolePermissionData", "position" + String.valueOf(position)); 
      Log.v("RolePermissionData", "ActionName" + String.valueOf(ObjPageAction.getAction_name())); 


      if (ObjPageAction.getType().toString().equalsIgnoreCase("parent")) { 
       checkBox1.setText(" " + ObjPageAction.getPage_name()); 
       checkBox1.setTypeface(null, Typeface.BOLD); 

      } else { 
       checkBox1.setText("  " + ObjPageAction.getAction_name()); 
      } 
      checkBox1.setChecked(ObjPageAction.getSelected()); 
      pageid.setText(String.valueOf(ObjPageAction.getPageid())); 
      checkBox1.setTag(String.valueOf(position)); 

      checkBox1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        CheckBox cb = (CheckBox) v; 

        Toast.makeText(AddRolePermission.this, cb.getText().toString()+"-"+cb.isChecked(), Toast.LENGTH_SHORT).show(); 

        Integer _POSSITION = Integer.parseInt(String.valueOf(cb.getTag())); 
        ClsPageActionMaster _ObjAction = list_role_master.get(_POSSITION); 

        //check is parent? or not 
        //if yes then find all chied and check them if not 
        if (_ObjAction.getType().equalsIgnoreCase("parent")) { 

         Log.v("CHECKBOXlist", "parent true -" + String.valueOf(_ObjAction.getSelected())); 
         Integer _parentPageID = _ObjAction.getPageid(); 
         Log.v("CHECKBOXlist", "_parentPageID -" + String.valueOf(_parentPageID)); 
         for (ClsPageActionMaster ObjPageActionMaster : list_role_master) { 
          if (_parentPageID == ObjPageActionMaster.getPageid()) { 
           Log.v("CHECKBOXlist", "pageid == actionPagID -" + String.valueOf(_ObjAction.getPageid())); 
           Log.v("CHECKBOXlist", "_parentPageID -" + String.valueOf(ObjPageActionMaster.getPageid())); 
           ObjPageActionMaster.setSelected(cb.isChecked()); 
           list_role_master.set(list_role_master.indexOf(ObjPageActionMaster), ObjPageActionMaster); 
          } 
         } 

         dataAdapter.notifyDataSetChanged(); 
        } else { 
         Log.v("CHECKBOXlist", "CHK_CHECKED-" + String.valueOf(_ObjAction.getSelected())); 
         _ObjAction.setSelected(cb.isChecked()); 
         list_role_master.set(_POSSITION, _ObjAction); 
        } 


        Log.v("CHECKBOXlist", "AFTER CHECKED"); 
        Log.v("CHECKBOXlist", "CHK_POSITION-" + String.valueOf(_POSSITION)); 
        Log.v("CHECKBOXlist", "CHK_ID-" + String.valueOf(_ObjAction.getId())); 
        Log.v("CHECKBOXlist", "chk_name-" + String.valueOf(_ObjAction.getAction_name())); 
        Log.v("CHECKBOXlist", "type" + String.valueOf(_ObjAction.getType())); 
        Log.v("CHECKBOXlist", "Position" + String.valueOf(position)); 
        Log.v("CHECKBOXlist", "CHK_CHECKED-" + String.valueOf(_ObjAction.getSelected())); 
       } 
      }); 

     } 
     return convertView; 
    } 
} 

私はdataAdapter.notifyDataSetChanged()を書いていました。まだリフレッシュしていないアダプタでチェックボックスのクリックイベントを書き込んだので、どのように問題を再現できるのですか?チェックボックスのクリックごとに、必要な出力が得られるようにリフレッシュする必要があります。 help.Thankのために感謝あなたは

+0

、あなたはリストを変更する必要があります(アダプタで渡される)チェックボックスのクリックイベントで、リストの更新後にdataAdapter.notifyDataSetChanged()を使用します。それはあなたのために動作することを願って –

+0

私はいくつかのコードで私を表示していない私を取得していない私を表示することができます... @GuptaShashwat –

答えて

0

リストとアダプタがあるとします。あなたのチェックボックスを見つける

ArrayList<String> my_list=new ArrayList<>(); 
my_list.add(contents); 
ArrayAdapter<> my_adapter = new ArrayAdapter<>(AgentCreateIntimation.this, android.R.layout.simple_spinner_dropdown_item, my_list); 

CheckBox ChkBx = (CheckBox) findViewById(R.id.checkbox); 
ChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (isChecked) 
     { 
my_list.add(contents); 
my_adapter.notifyDataSetChanged() 
      // perform logic 
     } 

    } 
}); 
ヨーヨーは、カスタムアダプタを宣言する必要はありませドン
+0

@ GuptaShashweat ..応答のためにおねえさん...コードは私のために働いていない... –

関連する問題