我正在创建一个带有textview和复选框的自定义列表视图项目。每当选中与用户相对应的复选框时,我都希望在烤面包片中看到他的名字。我已经使用了以下代码:如何在列表视图中获取所选用户名
mUserList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(ManualInviteActivity.this, position, Toast.LENGTH_SHORT).show();
Users1 user = (Users1) parent.getItemAtPosition(position);
if(user.isSelected()==true)
{
Toast.makeText(getBaseContext(), user.getName(), Toast.LENGTH_SHORT).show();
}
}
});
但是,当我切换复选框时,我没有看到任何东西。这里有什么错误? 感谢 (isSelected和的getName是在用户级的我自己的函数)
适配器代码:
public class UserListAdapter extends ArrayAdapter<Users1> {
static Context context;
static int layoutResourceId;
Users1 data[] = null;
public UserListAdapter(Context context, int layoutResourceId, Users1[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public long getItemId(int position) {
return position;
}
static class UserHolder {
TextView txtTitle;
CheckBox cbxUser;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
UserHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.user_name);
holder.cbxUser = (CheckBox) row.findViewById(R.id.user_checked);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
Users1 weather = data[position];
holder.txtTitle.setText(weather.title);
holder.cbxUser.setChecked(weather.isSelected());
// holder.txtTitle2.setText(weather.title2);
// holder.txtTitle2.setText(weather.title2);
// holder.txtTitle3.setText(weather.title3);
return row;
}
}
用户1类:
public class Users1 {
public String title;
boolean selected = true;
public Users1()
{
super();
}
public Users1(String title,boolean selected) {
super();
this.selected = selected;
this.title = title;
}
public String getName() {
return title;
}
public void setName(String name) {
this.title = name;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
如果无法检查列表项内。在
Nepster
而不是itemClickListener。使用适配器类内复选框的checkChangedListener。 – Nepster
是否解决了这个问题?在这里使用listview会使事情变得更加困难,除非你单独访问全局复选框,如果你想单独使用它,它不应该依赖于列表视图的“getView()”方法 – user2450263