如何在按钮单击时更改列表视图中行的文本

时间:2012-12-14 09:13:04

标签: android listview onclicklistener

我有一个包含Textview和Edittext的列表视图。 我有一个相同布局的按钮。我希望当我点击该按钮时,某些位置作为列表视图位置3的数据被其他文本更改

我试过这段代码,但它不能正常工作

THID

public View getView(int position, View convertView, ViewGroup parent) {
                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    convertView = inflater.inflate(R.layout.taskstrt, parent, false);

                   if (convertView == null || convertView.getTag() == null) {

                         holder = new ViewHolder();



                        holder.editText = (EditText) convertView.findViewById(R.id.editText1);
                        holder.textView = (TextView) convertView.findViewById(R.id.textView1);

                        holder.textView.setText(values.get(position).toString());
                        holder.editText.setText(arrayList2.get(position).toString());
                        holder.textView.setId(position);
                        holder.editText.setId(position);
                        holder.editText.setEnabled(false);


                   }

                   button.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        try{


                        button.setEnabled(false);
                        holder.editText.setId(2);
                        holder.editText.setText("ACCEPT");
                        }
                        catch(Exception e)
                        {
                            System.out.println("ERROR:");
                        }
                    }
                });

                   convertView.setTag(holder);
                   return convertView;
                }

1 个答案:

答案 0 :(得分:0)

首先,getView应该是这样的:

public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.taskstrt, parent, false);
        holder = new ViewHolder();
        //..instantiations

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    //^don't forget that this up there


    //...listeners and what not here
    return convertView;
}

此外,我注意到你的按钮不是作为getView的一部分实现的,就像其他持有者视图一样。在哪里?

Button button = (Button) convertView.findViewById(R.id.button1);

如果它是同一布局的一部分,为什么它不是持有者类的一部分?如果按钮未实例化为同一视图层次结构的一部分或根本没有实例化,则该按钮不会响应任何内容。