2011-09-06 1 views
0

저는 RelativeLayouts를 동적으로 생성하여 다른 레이아웃에 추가하고 있습니다. 내가 만드는 레이아웃에서 클릭 이벤트를 잡을 수 있기를 원합니다. 나는 함께 테스트를 해봤지만이 작업을 할 수없는 것 같습니다.클릭 수임보기 없음

public class AvatarItem extends RelativeLayout implements LoadImageAsyncTaskResponder 
{ 

private Status _status; 
private ImageButton _avatar; 
private AsyncTask<URL, Void, Drawable> _imageLoadTask; 
private TranslateAnimation _anim; 

public AvatarItem(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
    setVisibility(View.INVISIBLE); 
    _avatar = new ImageButton(getContext()); 
    addView(_avatar); 
} 

public void setStatus(Status status) 
{ 
    _status = status; 
    final User user = status.getUser(); 

    if (_imageLoadTask != null) 
    { 
     _imageLoadTask.cancel(true); 
    } 

    _imageLoadTask = new LoadImageAsyncTask(this).execute(user.getProfileImageURL()); 
} 

public void setLocation(int x, int y, int duration, Point middle) 
{ 
    _anim = new TranslateAnimation(middle.x, x, middle.y, y); 
    _anim.setDuration(duration); 
    _anim.setFillEnabled(true); 
    _anim.setFillAfter(true); 
} 

public Status getStatus() 
{ 
    return _status; 
} 

public ImageButton getButton() 
{ 
    return _avatar; 
} 

public void imageLoadCancelled() 
{ 
    // Don't care right now 
} 

public void imageLoaded(Drawable drawable) 
{ 
    setVisibility(View.VISIBLE); 
    _avatar.setImageDrawable(drawable); 
    startAnimation(_anim); 
} 

public void imageLoading() 
{ 
    _avatar.setImageDrawable(null);  
} 

} 여기

레이아웃 XML 파일입니다 :

다음
public class StatusActivity extends Activity implements OnClickListener 
{ 
    private ArrayList<AvatarItem> _buttonList = new ArrayList<AvatarItem>(); 
    private TweeterMe _app; 
    private Twitter _twitter; 
    private RelativeLayout _tweetViewer; 
    private TextView _tweetField; 
    private ArrayList<Status>_statii; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     _app = (TweeterMe)getApplication(); 
     _twitter = _app.getTwitter(); 
     setContentView(R.layout.main); 

     _tweetViewer = (RelativeLayout) findViewById(R.id.tweet_view); 
     _tweetField = (TextView) findViewById(R.id.tweet_text_view); 
     _tweetViewer.setVisibility(View.INVISIBLE); 

     _tweetViewer.setOnClickListener(new OnClickListener() 
     { 

      public void onClick(View v) 
      { 
       _tweetViewer.setVisibility(View.INVISIBLE); 
      } 
     }); 

    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
     if (!_app.isAuthorized()) 
     { 
      authorize(); 
     } 
     else 
     { 
      loadTweets(); 
     } 
    } 

    private void loadTweets() 
    { 
     try 
     { 
      _statii = _twitter.getHomeTimeline(); 

      RelativeLayout layout = (RelativeLayout)findViewById(R.id.main_view); 
      Display display = getWindowManager().getDefaultDisplay(); 
      Point middle = new Point(display.getWidth()/2, display.getHeight()/2); 

      for (Status s : _statii) 
      { 
       AvatarItem ai = new AvatarItem(this, null); 
       _buttonList.add(ai); 
       ai.setStatus(s); 
       ai.setLocation((int)(Math.random() * (display.getWidth() - 100)), (int)(Math.random() * (display.getHeight() - 150)), 500, middle); 
       layout.addView(ai); 
       ai.setOnClickListener(this); 
      } 
     } 
     catch(TwitterException e) 
     { 

     } 

    } 

    private void authorize() 
    { 
     Intent intent = new Intent(this, AuthorizeActivity.class); 
     startActivity(intent); 
    } 

    public void onClick(View v) 
    { 
     Log.d("TEST", "NOT WORKING"); 
    } 

} 

내가 만드는 오전 레이아웃입니다 : 여기

는 레이아웃을 생성하는 활동입니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <RelativeLayout 
     android:id="@+id/main_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 
    <RelativeLayout 
     android:id="@+id/tweet_view" 
     android:layout_width="fill_parent" 
     android:layout_margin="50px" 
     android:layout_height="150px" 
     android:background="#c5c5c5" 
     android:layout_centerInParent="true"> 
     <TextView 
      android:id="@+id/tweet_text_view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    </RelativeLayout> 
</RelativeLayout> 

의견이 있으십니까?

감사합니다.

+0

tweet_view가 보이지 않게 설정되어있는 것 같습니다. – cjk

답변

0

저는 onclick을 재정의해야한다고 생각합니다. 적어도 다른 예제에서 볼 수 있습니다. 그리고 이벤트를 훔치는 다른 곳에서 또 다른 onclick이 없는지 확인하십시오.