没有在android中返回正确的选定值

时间:2015-01-23 07:54:25

标签: android

嗨在下面的代码好友数组中有两个值user3和user1 with checkboxes.When我选择user1意味着第二个复选框显示检查变量值user3。

如何准确获取我选择的用户。我错了

的java

    public class GroupList extends ListActivity 
    {

        boolean[] checkBoxState;
        boolean isChecked;

        int position;
        private IAppManager imService = null;

        private FriendListAdapter friendAdapter;

        public String ownusername = new String();

        private class FriendListAdapter extends BaseAdapter 
        {   
            @SuppressWarnings("unused")

            class ViewHolder {
                TextView text;
                ImageView icon;
                CheckBox check1;



            }

            private LayoutInflater mInflater;
            private Bitmap mOnlineIcon;
            private Bitmap mOfflineIcon;        

            private FriendInfo[] friends = null;





            public FriendListAdapter(Context context) {
                super();            

                mInflater = LayoutInflater.from(context);

                mOnlineIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.greenstar);
                mOfflineIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.redstar);

            }

            public void setFriendList(FriendInfo[] friends)
            {
                this.friends = friends;

            }


            public int getCount() {     

                return friends.length;
            }


            public FriendInfo getItem(int position) {           

                return friends[position];
            }

            public long getItemId(int position) {

                return 0;
            }

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

                final ViewHolder holder;


                if (convertView == null) 
                {
                    convertView = mInflater.inflate(R.layout.grouplist, null);


                    holder = new ViewHolder();

                    holder.text = (TextView) convertView.findViewById(R.id.text);
                    holder.icon = (ImageView) convertView.findViewById(R.id.icon);
                    holder.check1 = (CheckBox)convertView.findViewById(R.id.checkBox1);

                    convertView.setTag(holder);

                }           

                else {

                    holder = (ViewHolder) convertView.getTag();

                }


                holder.text.setText(friends[position].userName);
                holder.icon.setImageBitmap(friends[position].status == STATUS.ONLINE ? mOnlineIcon : mOfflineIcon);


                checkBoxState = new boolean[friends.length];
                holder.check1.setChecked(checkBoxState[position]);
                holder.check1.setOnCheckedChangeListener(new OnCheckedChangeListener(){

                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        checkBoxState[position]=isChecked;




                        Toast.makeText(getApplicationContext(),friends[position].userName+"checked", Toast.LENGTH_LONG).show();
                    }
                });


                return convertView;
            }

        }
protected void onCreate(Bundle savedInstanceState) 
    {       
        super.onCreate(savedInstanceState);
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        setContentView(R.layout.group_list_screen);

        Button create=(Button)findViewById(R.id.create);
        create.setOnClickListener(new OnClickListener() {

            @SuppressWarnings("unused")
            @Override
            public void onClick(View v) {
                String groupname = getIntent().getStringExtra("nick");


                        try {

                            FriendInfo[] friend=FriendController.getFriendsInfo();

                            String check=friend[position].userName;
                            String result1 = imService.CreateGroup(groupname,imService.getUsername(),check);
                        } catch (UnsupportedEncodingException e) {

                            e.printStackTrace();
                        }


                Toast.makeText(getApplicationContext(), "Group Created Sucessfully",Toast.LENGTH_LONG).show();

            }
        });


        friendAdapter = new FriendListAdapter(this);




    }   

1 个答案:

答案 0 :(得分:1)

好的 - 我知道你想做什么 - 但你的方法很复杂。

使FriendListAdapter更简单 - 为您的行创建XML布局资源:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableRight="@drawable/checked_box"
android:text="">
</CheckedTextView>

接下来在drawable xml中创建:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/checked"/>
<item android:drawable="@drawable/unchecked"/>
</selector>
创建和设置适配器后,在java代码中

可以通过listView.getCheckedItemPositions();

来检索已检查的项目