在自定义listview中使用setItemChecked import java.util.ArrayList; 导入java.util.List; 导入android.app.Activity; 导入android.content.Context; 导入android.graphics.Typeface; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.ViewGroup; 导入android.widget.BaseAdapter; 导入android.widget.CheckedTextView; 导入android.widget.ImageView; 导入android.widget.TextView; 导入android.widget.Toast; 导入com.bumptech.glide.glide; 导入com.parse.ParseRelation; 导入com.parse.ParseUser; 公共类FriendsListAdapter扩展了BaseAdapter{ 视窗座; 语境; 列出朋友名单; ParseUser=ParseUser.getCurrentUser(); 人际关系;朋友关系; 公共FriendsListAdapter(上下文){ this.context=上下文; friendsList=newArrayList(); friendsRelation=user.getRelation(“Friends”); } 公共void添加(FriendsList对象,int位置){ 添加(位置、对象); } 公共无效删除(内部位置){ 好友列表。删除(位置); } @凌驾 public int getCount(){ //TODO自动生成的方法存根 return friendsList.size(); } @凌驾 公共对象getItem(int位置){ //TODO自动生成的方法存根 返回好友列表。获取(位置); } @凌驾 公共长getItemId(int位置){ //TODO自动生成的方法存根 返回位置; } @凌驾 公共视图getView(最终整数位置、视图转换视图、视图组父视图){ //TODO自动生成的方法存根 视图v=转换视图; LayoutInflater mInflater=(LayoutInflater)上下文 .getSystemService(活动.布局\充气机\服务); 如果(v==null){ v=最小充气器。充气(R.布局。朋友列表项目,空); 支架=新的视图支架(v); v、 setTag(支架); }否则{ holder=(ViewHolder)v.getTag(); } Typeface roboto=Typeface.createFromAsset(context.getAssets(),“font/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\u picture); 返回v; } 静态类视窗夹{ 文本视图列表文本; 选中TextView friendsBox; 图像视图剖面图; 视图支架(视图v){ listText=(TextView)v.findViewById(R.id.friend\u用户名); friendsBox=(CheckedTextView)v.findViewById(R.id.isFriend); profile_picture=(图像视图)v.findviewbyd(R.id.friendsProfilePicture); } } 公共void Toast(字符串文本,整数长度){ Toast.makeText(上下文、文本、长度).show(); } }

在自定义listview中使用setItemChecked import java.util.ArrayList; 导入java.util.List; 导入android.app.Activity; 导入android.content.Context; 导入android.graphics.Typeface; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.ViewGroup; 导入android.widget.BaseAdapter; 导入android.widget.CheckedTextView; 导入android.widget.ImageView; 导入android.widget.TextView; 导入android.widget.Toast; 导入com.bumptech.glide.glide; 导入com.parse.ParseRelation; 导入com.parse.ParseUser; 公共类FriendsListAdapter扩展了BaseAdapter{ 视窗座; 语境; 列出朋友名单; ParseUser=ParseUser.getCurrentUser(); 人际关系;朋友关系; 公共FriendsListAdapter(上下文){ this.context=上下文; friendsList=newArrayList(); friendsRelation=user.getRelation(“Friends”); } 公共void添加(FriendsList对象,int位置){ 添加(位置、对象); } 公共无效删除(内部位置){ 好友列表。删除(位置); } @凌驾 public int getCount(){ //TODO自动生成的方法存根 return friendsList.size(); } @凌驾 公共对象getItem(int位置){ //TODO自动生成的方法存根 返回好友列表。获取(位置); } @凌驾 公共长getItemId(int位置){ //TODO自动生成的方法存根 返回位置; } @凌驾 公共视图getView(最终整数位置、视图转换视图、视图组父视图){ //TODO自动生成的方法存根 视图v=转换视图; LayoutInflater mInflater=(LayoutInflater)上下文 .getSystemService(活动.布局\充气机\服务); 如果(v==null){ v=最小充气器。充气(R.布局。朋友列表项目,空); 支架=新的视图支架(v); v、 setTag(支架); }否则{ holder=(ViewHolder)v.getTag(); } Typeface roboto=Typeface.createFromAsset(context.getAssets(),“font/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\u picture); 返回v; } 静态类视窗夹{ 文本视图列表文本; 选中TextView friendsBox; 图像视图剖面图; 视图支架(视图v){ listText=(TextView)v.findViewById(R.id.friend\u用户名); friendsBox=(CheckedTextView)v.findViewById(R.id.isFriend); profile_picture=(图像视图)v.findviewbyd(R.id.friendsProfilePicture); } } 公共void Toast(字符串文本,整数长度){ Toast.makeText(上下文、文本、长度).show(); } },android,checkbox,checkedtextview,Android,Checkbox,Checkedtextview,我希望能够在我的listview适配器中使用setItemChecked方法,这样我就可以解析一些数据并基于布尔值选中该框。如何在适配器中实现这一点 这是一个我正在尝试做的例子 import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context; import android.graphics.Typeface; import android

我希望能够在我的listview适配器中使用setItemChecked方法,这样我就可以解析一些数据并基于布尔值选中该框。如何在适配器中实现这一点

这是一个我正在尝试做的例子

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();
    }
}
friendsList=(ListView)findViewById(R.id.friendsList);
friendsList.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
friendsList.setItemChecked(0,true);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
CheckedTextView cv=(CheckedTextView)view.findViewById(R.id.isFriend);
cv.toggle();
}
});
适配器的
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();
        }

    });
您还可以使用OnClickListener而不是OnCheckedChangeListener:

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);
            }
        }
    });

请记住在
getView()
方法中将
int位置
ViewGroup父变量设置为
final

您的最低API级别是多少?@corsair992我的最低API级别是16。好的,您可以设置一个选择器复选框drawable,该复选框在
状态激活时被选中,并将其分配给
CheckedTextView
中的
复选标记属性。这应该在ICS之后起作用。
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);
            }
        }
    });