1

单击图像时,如何将 int 变量的名称传递给弹出窗口?我为每个图像设置了一个 int,并且我设置了很多图像。

这就是我在 PopupWindow 上的 textView 中使用 int 的方式。

public boolean onLongClick(View v) {
// v.setTag(v);

case R.id.hsv1iv1:
ImageView ivpopup = (ImageView) popupView.findViewById(R.id.pv1);
intcount1++;         // I would like to pass this int name to the popup window. 
break;
case R.id.hsv2iv1:
ImageView ivpopup = (ImageView) popupView.findViewById(R.id.pv1);
intcount2++;         // I would like to pass this int name to the popup window. 
break;

LayoutInflater layoutInflater 
= (LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE); 
View popupView = layoutInflater.inflate(R.layout.popup, null); 
final PopupWindow popupWindow = new PopupWindow(
popupView, 
LayoutParams.WRAP_CONTENT, 
LayoutParams.WRAP_CONTENT); 
popupWindow.update(0, 0, 800, 500);
ColorDrawable dw = new ColorDrawable(-005500);
popupWindow.setBackgroundDrawable(dw);
tvpwlikectr = (TextView) popupView.findViewById(R.id.liketv);


Button pwlikebtn =  (Button) popupView.findViewById(R.id.pwlikebtn);

Button btnDismiss = (Button)popupView.findViewById(R.id.cancel);

pwlikebtn.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

intcount1++;
tvpwlikectr.setText(Integer.toString(intcount1));  // this code doesn't work with the intcount1

}});
btnDismiss.setOnClickListener(new Button.OnClickListener(){

public void onClick(View v) {

popupWindow.dismiss();

popupWindow.setTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);

}
 }
4

1 回答 1

0

你能解释一下你是如何设置每个图像的 INT 的吗?复制并粘贴有关如何为每个图像设置 INT 的代码会很有帮助,因为不清楚您为每个图像设置一个 INT 是什么意思。

另外,您对 int 变量的值或变量的名称感兴趣吗?展示你是如何设置大量图像的,每个图像都带有 int 值,这将有助于澄清你想要做什么。

-- 看到更新后的代码后添加答案 --

我将创建一个具有您感兴趣的名称的对象(即 intcount1)和一个 int 以保留实际值。之后,您可以使用 view.setTag 方法将每个按钮/ImaveView 与该对象相关联,并通过 view.getTag 方法获取值。这是一个例子:

private class MyTag {
    String mTagName;
    int mCount;
    MyTag(String tagName) {
       mTagName = tagName;
       mCount = 0;
    }
}

// in your onCreate or initializaion code somewhere
ImageView view1 = (ImageView) popupView.findViewById(R.id.hsv1iv1);
MyTag imageTag = new MyTag("intcount1");
view1.setTag(imageTag);
ImageView view2 = (ImageView) popupView.findViewById(R.id.hsv1iv1);

// this will go wherever you handle the onLongClick
public boolean onLongClick(View v) {
   Object tag = v.getTag();
   if (tag instanceof MyTag) {
      MyTag myTag = (MyTag) tag;
      myTag.mCount++;
   }
}

// I'm assuming you are setting the text from the actual clicked object
// so this will go wherever you are setting the text/handling the click
public void onClick(View v) {
    Object tag = v.getTag();
    if (tag instanceof MyTag) {
       MyTag myTag = (MyTag) tag;
       myTag.mCount++;
       tvpwlikectr.setText(myTag.mTagName);
    }
}   

底线是,创建一个具有名称/计数值的对象,使用 view.setTag() 函数将每个 View 与其自己的对象相关联,当需要读取值时,使用 view.getTag() 获取对象并读取 mTagName(“变量”名称)和 mCount(“变量”值)。

于 2012-10-22T21:58:59.327 回答