我有一个列表视图,其中包含一个按钮和一组数据(名称,年龄,人的高度)列表视图的一个元素是每个人的数据。我希望能够在单击按钮时创建一个toast,显示该人的姓名。人们的数据存储在一个 我创建的对象的arrayList。如何才能做到这一点?我遇到的问题是访问onclicklistener onclick函数中的数据
答案 0 :(得分:2)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.textView = (TextView) convertView
.findViewById(R.id.textViewRow);
holder.button = (Button) convertView
.findViewById(R.id.checkBoxRow);
convertView.setTag(holder);
holder.button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(this, "Name: " + yourArrayList.get(position).getName(), Toast.LENGTH_LONG).show();
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
}
private class ViewHolder {
TextView textView;
Button button;
}
答案 1 :(得分:0)
类中的getter和setter,其列表中包含您正在使用的对象。为列表的getView方法中的每一行中的按钮添加一个OnClickListener,然后使用position和get方法显示人员名称。
例如 -
ArrayList<PersonData> list = new ArrayList<PersonData>();
在PersonData类中添加getter和setter,然后获取人名,按钮的OnClickListener可以在getView方法中编码为 -
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(this,"" + list.get(position).getName(),Toast.LENGTH_LONG).show();
}
});