2015-01-05 5 views
0
import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Typeface; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckedTextView; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.bumptech.glide.Glide; 
import com.parse.ParseRelation; 
import com.parse.ParseUser; 

public class FriendsListAdapter extends BaseAdapter{ 
    ViewHolder holder; 
    Context context; 
    List<FriendsList> friendsList; 
    ParseUser user = ParseUser.getCurrentUser(); 
    ParseRelation<ParseUser> friendsRelation; 

    public FriendsListAdapter(Context context) { 
     this.context = context; 
     friendsList = new ArrayList<FriendsList>(); 
     friendsRelation = user.getRelation("Friends"); 
    } 

    public void add(FriendsList object,int position){ 
     friendsList.add(position,object); 
    } 

    public void remove(int position){ 
     friendsList.remove(position); 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return friendsList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return friendsList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View v = convertView; 
     LayoutInflater mInflater = (LayoutInflater) context 
       .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if(v == null){ 
      v = mInflater.inflate(R.layout.friends_list_item,null); 
      holder = new ViewHolder(v); 
      v.setTag(holder); 
     }else{ 
      holder = (ViewHolder)v.getTag(); 
     } 
     Typeface roboto = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Regular.ttf"); 
     holder.listText.setTypeface(roboto); 
     holder.listText.setText(friendsList.get(position).username); 
     Glide.with(context).load(friendsList.get(position).profilePicture).into(holder.profile_picture); 
     return v; 
    } 

    static class ViewHolder{ 
     TextView listText; 
     CheckedTextView friendsBox; 
     ImageView profile_picture; 
     ViewHolder(View v){ 
      listText = (TextView)v.findViewById(R.id.friend_username); 
      friendsBox = (CheckedTextView)v.findViewById(R.id.isFriend); 
      profile_picture = (ImageView)v.findViewById(R.id.friendsProfilePicture); 
     } 
    } 
    public void Toast(String text,int length){ 
     Toast.makeText(context, text, length).show(); 
    } 
} 

일부 데이터를 구문 분석하고 부울을 기반으로 상자를 검사 할 수있는 방법으로 내 listview 어댑터에서 setItemChecked 메소드를 사용할 수 있기를 원합니다. 이 어댑터에 어떻게 구현할 수 있습니까?사용자 정의 listview에서 setItemChecked 사용

다음은 내가하려는 일의 예입니다. 당신은 또한 OnCheckedChangeListener 대신 OnClickListener를 사용할 수 있습니다

final CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.product_checkbox); 
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       // The checkbox is checked, then set the list item as selected 
       ((ListView) parent).setItemChecked(position, true); 
      } else { 
       // The checkbox is unchecked, then set the list item as unselected 
       ((ListView) parent).setItemChecked(position, false); 
      } 
     } 
    }); 

:

checkBox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Get the checkbox state 
      boolean isChecked = checkBox.isChecked(); 
      if (isChecked) { 
       // The checkbox is checked, then set the list item as selected 
       ((ListView) parent).setItemChecked(position, true); 
      } else { 
       // The checkbox is unchecked, then set the list item as unselected 
       ((ListView) parent).setItemChecked(position, false); 
      } 
     } 
    }); 

finalint positionViewGroup parent로 설정할 기억하십시오 AdaptergetView() 방법에서

friendsList = (ListView)findViewById(R.id.friendsList); 
    friendsList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    friendsList.setItemChecked(0, true); 
    friendsList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 
      CheckedTextView cv =(CheckedTextView)view.findViewById(R.id.isFriend); 
      cv.toggle(); 
     } 

    }); 
+0

최소 API 레벨은 무엇입니까? – corsair992

+0

@ corsair992 최소값은 16입니다. – Rhynoboy

+0

좋습니다. 'state_activated'에 체크 표시가있는 선택기 체크 상자 드로어 블을 설정하고이를'CheckedTextView'의'checkMark' 애트리뷰트에 할당 할 수 있습니다. 이것은 post-ICS에서 작동해야합니다. – corsair992

답변

0

변수는 getView() 메소드에 있습니다.