在android吐司中显示listview数据

时间:2014-02-26 22:01:23

标签: android android-listview onclicklistener

我有一个列表视图,其中包含一个按钮和一组数据(名称,年龄,人的高度)列表视图的一个元素是每个人的数据。我希望能够在单击按钮时创建一个toast,显示该人的姓名。人们的数据存储在一个 我创建的对象的arrayList。如何才能做到这一点?我遇到的问题是访问onclicklistener onclick函数中的数据

2 个答案:

答案 0 :(得分:2)

在你的getView方法中,你必须设置setOnClickListener,然后设置clickPosition的clicked项,并使用它从你的arraylist中获取保存数据的信息,然后调用getName()(或一些返回你名字的函数)并显示它。 ..

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