Twitter 我可以使用fabric sdk在时间线上设置自定义onClick吗?

Twitter 我可以使用fabric sdk在时间线上设置自定义onClick吗?,twitter,android-listview,onclick,android-adapter,twitter-fabric,Twitter,Android Listview,Onclick,Android Adapter,Twitter Fabric,我正在使用Fabric创建Twitter客户端,但无法创建自定义onClick。 我创建了这个自定义适配器,并尝试创建OnClickListener,但没有工作。始终在浏览器tweet中打开 public class TweetAdapter extends TweetTimelineListAdapter { public ArrayList<Long> tweetIds=new ArrayList<Long>(); public TweetAdapt

我正在使用Fabric创建Twitter客户端,但无法创建自定义onClick。 我创建了这个自定义适配器,并尝试创建OnClickListener,但没有工作。始终在浏览器tweet中打开

public class TweetAdapter extends TweetTimelineListAdapter {

    public ArrayList<Long> tweetIds=new ArrayList<Long>();
    public TweetAdapter(Context context, Timeline<Tweet> timeline) {
        super(context, timeline);
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Object rowView = convertView;
        final Tweet tweet = (Tweet)this.getItem(position);
        if(convertView == null) {
            rowView = new CompactTweetView(this.context, tweet);
        } else {
            ((BaseTweetView)convertView).setTweet(tweet);
            ((View)rowView).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    tweetIds.add(tweet.getId());
                }
            });
        }
        return (View)rowView;
    }
}

有什么想法吗?谢谢

最后,我使用一个自定义适配器(与您在问题中使用的适配器非常相似)实现了这一功能。此适配器从超级实现获得结果视图,并添加onClickListener以覆盖结构默认值:

class CustomTweetTimelineListAdapter extends TweetTimelineListAdapter {

    public CustomTweetTimelineListAdapter(Context context, Timeline<Tweet> timeline) {
        super(context, timeline);
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);

        //disable subviews to avoid links are clickable
        if(view instanceof ViewGroup){
            disableViewAndSubViews((ViewGroup) view);
        }

        //enable root view and attach custom listener
        view.setEnabled(true);            
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tweetId = "click tweetId:"+getItemId(position);
                Toast.makeText(context, tweetId, Toast.LENGTH_SHORT).show();
            }
        });
        return view;
    }

    //helper method to disable subviews
    private void disableViewAndSubViews(ViewGroup layout) { 
        layout.setEnabled(false); 
        for (int i = 0; i < layout.getChildCount(); i++) { 
            View child = layout.getChildAt(i); 
            if (child instanceof ViewGroup) { 
                disableViewAndSubViews((ViewGroup) child); 
            } else { 
                child.setEnabled(false); 
                child.setClickable(false); 
                child.setLongClickable(false); 
            } 
        } 
    }

}
class CustomTweetTimeLinesAdapter扩展了TweetTimeLinesAdapter{
公共CustomTweetTimelineListAdapter(上下文、时间线){
超级(上下文、时间线);
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
//禁用子视图以避免链接可单击
if(视图组的视图实例){
禁用视图和子视图((视图组)视图);
}
//启用根视图并附加自定义侦听器
view.setEnabled(true);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
String tweetId=“单击tweetId:”+getItemId(位置);
Toast.makeText(上下文、tweetId、Toast.LENGTH_SHORT).show();
}
});
返回视图;
}
//用于禁用子视图的帮助器方法
私有无效禁用视图和子视图(视图组布局){
layout.setEnabled(false);
对于(inti=0;i
完整的代码示例


希望有帮助。

要禁用修改方法所需的所有单击:
private void disableview和subview(ViewGroup布局){layout.setEnabled(false);for(int i=0;i
其他所有功能都很完美。非常感谢您,关于如何在不扩展TweetTimeLineListAdapter的情况下实现这一点,有很多想法吗?我已经尝试了上面的代码,但对我来说不起作用。我正在创建一个Tweet对象,并将其添加到FrameLayout中,这是列表中的一行。我需要在不调用默认Tweet操作的情况下选择一个。
class CustomTweetTimelineListAdapter extends TweetTimelineListAdapter {

    public CustomTweetTimelineListAdapter(Context context, Timeline<Tweet> timeline) {
        super(context, timeline);
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);

        //disable subviews to avoid links are clickable
        if(view instanceof ViewGroup){
            disableViewAndSubViews((ViewGroup) view);
        }

        //enable root view and attach custom listener
        view.setEnabled(true);            
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tweetId = "click tweetId:"+getItemId(position);
                Toast.makeText(context, tweetId, Toast.LENGTH_SHORT).show();
            }
        });
        return view;
    }

    //helper method to disable subviews
    private void disableViewAndSubViews(ViewGroup layout) { 
        layout.setEnabled(false); 
        for (int i = 0; i < layout.getChildCount(); i++) { 
            View child = layout.getChildAt(i); 
            if (child instanceof ViewGroup) { 
                disableViewAndSubViews((ViewGroup) child); 
            } else { 
                child.setEnabled(false); 
                child.setClickable(false); 
                child.setLongClickable(false); 
            } 
        } 
    }

}