我是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;
}
}
答案 0 :(得分:0)
我认为你想要做的就是制作自己的onClickListener()。
查看此解决方案:How to pass parameters to OnClickListener?
然后将TextView传递给构造函数。
答案 1 :(得分:0)
你有两个问题:
建议不要使用静态变量来存储视图(内存泄漏)。您只需将引用作为参数添加到函数中或作为字段。
在“else”部分,您没有更新变量“v”以显示新数据,仅在创建视图时将数据放入其中。