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);
}
}
});
이 final
int position
과 ViewGroup parent
로 설정할 기억하십시오 Adapter
의 getView()
방법에서
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();
}
});
최소 API 레벨은 무엇입니까? – corsair992
@ corsair992 최소값은 16입니다. – Rhynoboy
좋습니다. 'state_activated'에 체크 표시가있는 선택기 체크 상자 드로어 블을 설정하고이를'CheckedTextView'의'checkMark' 애트리뷰트에 할당 할 수 있습니다. 이것은 post-ICS에서 작동해야합니다. – corsair992