Android中onClick方法的setText方法

时间:2013-02-18 18:38:28

标签: java android static textview settext

我是Java新手,遇到了问题。我已经设置了TextView,并且想要在从对话框中单击按钮时调用setText方法。此TextView已在我的主要活动中设置。我没有将它初始化为静态,因为这会产生错误。有问题的代码行是 - Tabs.total.setText("PRINTING TO TEXT VIEW");我想要设置我的班级标签中定义的TextView的内容。

变量total的定义如下 -

TextView total = (TextView) findViewById(R.id.total_view);

我已经看了很多关于这个问题的材料但到目前为止找不到解决方案。我希望有人可以提供帮助。谢谢!

public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    final View v;
    if(convertView==null){
        LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = li.inflate(R.layout.scrollergrid, null);
        final TextView tv = (TextView)v.findViewById(R.id.icon_text);
        tv.setTag(pos);
        tv.setText(mItems[pos]);
        TextView price = (TextView)v.findViewById(R.id.price_text);
        price.setText("$" + Prices[pos]);

        pos += 1;
        final ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
        iv.getLayoutParams().height = 150;
        iv.getLayoutParams().width = 150;
        iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
        iv.setImageResource(mThumbIds[position]);
        iv.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                id = tv.getTag();
                System.out.println(mItems[(Integer) id] + " $" + Prices[(Integer) id]);

                final Dialog dialog = new Dialog(mContext);
                dialog.setContentView(R.layout.alertdialog);
                dialog.setTitle(mItems[(Integer) id]);

                ImageView dialogImage = (ImageView) dialog.findViewById(R.id.alert_image);
                dialogImage.setImageResource(mThumbIds[(Integer) id]);

                TextView itemDescription = (TextView) dialog.findViewById(R.id.item_description);
                itemDescription.setText("A nice little piece of food. Good for all the family. Full of flavour!!");

                TextView itemPrice = (TextView) dialog.findViewById(R.id.item_price);
                itemPrice.setText("$" + Prices[(Integer) id]);

                Button goBack = (Button) dialog.findViewById(R.id.go_back);
                goBack.setOnClickListener(new OnClickListener() {
                @Override
                    public void onClick(View v) {
                        dialog.cancel();
                    }
                });

                Button order = (Button) dialog.findViewById(R.id.order);
                order.setOnClickListener(new OnClickListener() {
                @Override
                    public void onClick(View v) {
                        Tabs.Order.add(mItems[(Integer) id] + " " + Prices[(Integer) id]);
                        System.out.println(Tabs.Order);
                        Tabs.total.setText("HIIII");
                        dialog.cancel();
                    }
                });

                dialog.show();
            } 

        });

    }
    else
    {
        v = convertView;
    }
    return v;
}

}

2 个答案:

答案 0 :(得分:0)

我认为你想要做的就是制作自己的onClickListener()。

查看此解决方案:How to pass parameters to OnClickListener?

然后将TextView传递给构造函数。

答案 1 :(得分:0)

你有两个问题:

  1. 建议不要使用静态变量来存储视图(内存泄漏)。您只需将引用作为参数添加到函数中或作为字段。

  2. 在“else”部分,您没有更新变量“v”以显示新数据,仅在创建视图时将数据放入其中。