2014-09-15 4 views
0

목록보기의 확인란과 함께 전화 내의 모든 연락처가 표시되었습니다. 이제 사용자가 A와 B라고 말하고 "ok"버튼을 클릭하면 모든 체크 박스의 값을 false로 설정할 때 목록을 다시 표시합니다. 이를 위해 메서드를 만들었지 만이 메서드를 호출하면 선택한 연락처의 값이 목록이 스크롤 될 때만 선택 취소되고 그렇지 않으면 선택되지 않은 상태로 유지됩니다. 내 코드의 문제점은 무엇입니까 ???목록보기가 새로 고쳐지지 않습니다.

코드 확인 버튼을

public void getContactSync(Context context, ArrayList<ContactModel> data) { 
     setListAdapter(null); 
     contactListAdapter = new ContactListAdapter(context, data); 
     setListAdapter(contactListAdapter); 
//  contactListAdapter.notifyDataSetChanged(); 
    } 

단지) (notifydatasetchanged이 문제를 해결할 호출 어댑터 내부의 체크 박스의 클릭에

Arrays.fill(ContactListAdapter.contacts, 0); 
          contactListFragment.getContactSync(getActivity(), dbHandler.getAlGetContacts()); 

사용자 정의 어댑터

public class ContactListAdapter extends BaseAdapter { 

    private Context context; 
    private ArrayList<ContactModel> data; 
    DbHandler dbHandler; 
    public static int[] contacts; 
    static ArrayList<String> contactsSepetrated; 
    public static ArrayList<String> contactsId; 

    public ContactListAdapter(Context context, ArrayList<ContactModel> data) { 
     this.context = context; 
     this.data = data; 
     contacts = new int[data.size()]; 
     contactsSepetrated = new ArrayList<String>(); 
     contactsId = new ArrayList<String>(); 
    } 

    @Override 

    public int getCount() { 
     return data.size(); 
    } 

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

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

    @Override 
    public View getView(final int i, View view, ViewGroup viewGroup) { 

     final ViewHolder holder; 
     dbHandler = new DbHandler(context); 

     if (view == null) { 
      holder = new ViewHolder(); 
      view = LayoutInflater.from(context).inflate(R.layout.contact_custom_list, viewGroup, false); 
      holder.tvContact = (TextView) view.findViewById(R.id.tv_contact_name); 
      holder.checkBox = (CheckBox) view.findViewById(R.id.cb_contact_checkbox); 

      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 

     holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
                 @Override 
                 public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

                  if (compoundButton == holder.checkBox) { 
                   if (b) { 
                    contacts[i] = 1; 
                    //dbHandler.updateContactList(data.get(i).getUserID(), 1); 


// 

                   } else { 

                    contacts[i] = 0; 
                   } 
                  } 

                 } 
                } 

     ); 

     holder.checkBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       if (contacts[i] == 1) { 

        contactsSepetrated.add(data.get(i).getContactName()); 
        Log.e("Contact values", contactsSepetrated.toString()); 
        contactsId.add(data.get(i).getUserID()); 
        Log.e("Position", "" + i); 


       } else if (contacts[i] == 0) { 

        contactsSepetrated.remove(data.get(i).getContactName()); 
        contactsId.remove(data.get(i).getUserID()); 
        Log.e("Contact values", contactsSepetrated.toString()); 
        Log.e("Position", "" + i); 
       } 

       ShareWithinpocketDocs.etContactsList.setText(contactsSepetrated.toString().subSequence(1, contactsSepetrated.toString().length() - 1)); 


      } 
     }); 


     if (contacts[i] == 0) { 
      holder.checkBox.setChecked(false); 
//   emailSeperated.remove(data.get(i).getEmail()); 
//   Log.e("Email values", emailSeperated.toString()); 

//   ShareWithinpocketDocs.etEmailLists.setText(emailSeperated.toString()); 
     } else { 
      holder.checkBox.setChecked(true); 
//   emailSeperated.add(data.get(i).getEmail()); 
//   Log.e("Email values", emailSeperated.toString()); 

     } 


     holder.tvContact.setText(data.get(i).getContactName()); 


     return view; 
    } 

    private class ViewHolder { 
     TextView tvContact; 
     CheckBox checkBox; 

    } 
} 
+0

) 내부 : HTTP : //developer.android.com/reference/android/widget/BaseAdapter.html의 –

+0

가능한 중복 [안드로이드 목록보기를 새로 고침하는 방법?] (HTTP : //stackoverflow.com/questions/2250770/how-to-refresh-android-listview) –

답변

1

을 클릭

당신은 확인 버튼 어댑터를 새로 추가를 클릭 할 경우 832,154,

확인 버튼이 setListAdapter(contactListAdapter)를 호출하는

adapter.notifydatasetchagned() 
+0

Nah가 작동하지 않습니다. 시도했지만 목록을 스크롤 할 때 선택된 연락처 만 선택 취소됩니다. – user3917131

+0

잘못된 작업을 수행 할 수 있습니다. – Dhananjay

+0

Nah Sir 나는 노력했지만 아무런 작업도하지 않았습니다. – user3917131

0

시도를 클릭; 여기에 다시 당신이 notifyDataSetChanged (읽기 있다고 생각 당신 onClick()

관련 문제