1

画像を表示するために Horizo​​ntalScrollView を実装しました。しかし、Horizo​​ntalScrollView で特定の画像をクリックするための onclick リスナーを実装する方法が見つかりません。

imageview 1にonclickを実装しましたが、imageviewの呼び出し中にIDを設定しましたが、トーストメッセージでは「14」しか表示されません..

誰でも私を助けてください

更新しました

サムのおかげで、彼は間違いを指摘しました。今、すべての画像の下にテキストを表示したいと考えています。そのため、相対レイアウトと次のコードを実装しようとしていますが、機能しません。

これが私のコードです

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.cfragment, container, false);
    }
@Override
public void onStart() {
    super.onStart();
    /** Setting the multiselect choice mode for the listview */
    initfrag();
}
private void initfrag() {
    RelativeLayout layout = new RelativeLayout(getActivity());
     TextView tv1 = new TextView(getActivity());
     tv1.setText("xyzxyzyxyzxyz"); tv1.setId(1);
     TextView tv2 = new TextView(getActivity());
     tv2.setText("xyzxyzyxyzxyz");tv2.setId(2);
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
             RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
     lp.addRule(RelativeLayout.BELOW, tv1.getId());
     layout.addView(tv1);        
     layout.addView(tv2, lp);
    final LinearLayout linearlayout1 = (LinearLayout)getView().findViewById(R.id.container);
    LinearLayout linearlayout2 = (LinearLayout)getView().findViewById(R.id.container2);
    LinearLayout linearlayout3 = (LinearLayout)getView().findViewById(R.id.container3);
    for (int i = 0; i < 15; i++) { 
        iv = new ImageView(getActivity());
        iv.setPadding(20, 5, 5, 5);
        iv.setId(i);
         iv.setImageResource(R.drawable.test_play_image);
         linearlayout1.addView(iv, 200, 220);
         ImageView iv2 = new ImageView(getActivity());
         iv2.setPadding(20, 5, 5, 5);
         iv2.setImageResource(R.drawable.test_play_image);
         linearlayout2.addView(iv2, 200, 220);

         ImageView iv3 = new ImageView(getActivity());
            iv3.setPadding(20, 5, 5, 5);
             iv3.setImageResource(R.drawable.test_play_image);
             linearlayout3.addView(iv3, 200, 220);
             iv.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    int s =iv.getId();
                    Toast t = Toast.makeText(getActivity(), "id is "+s, Toast.LENGTH_SHORT);
                    t.show();
                }
            });
4

1 に答える 1

1

ループで最後に作成されたビューではなく、クリックしたばかりのビューの ID を取得します。したがって、OnClickListener の変数を次のように変更するだけですiv

int s =iv.getId();

v渡されたビューonClick():

int s = v.getId();
于 2012-11-06T17:20:49.640 に答える