1

画像がクリックされたときに int 変数の名前を popupwindow に渡すにはどうすればよいですか? 画像ごとに 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.getTag() を使用してオブジェクトを取得することです。 mTagName (「変数」名) と mCount (「変数」値) を読み取ります。

于 2012-10-22T21:58:59.327 に答える