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

标签 twitter android-listview onclick android-adapter twitter-fabric

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

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;
    }
}

在 BaseTweetView 类中,它是函数类型 OnClickListener 但在这种情况下,我想不出要覆盖的任何想法。
private void setPermalinkLauncher() {
    BaseTweetView.PermalinkClickListener listener = new BaseTweetView.PermalinkClickListener();
    this.setOnClickListener(listener);
    this.contentView.setOnClickListener(listener);
}

class PermalinkClickListener implements OnClickListener {
    PermalinkClickListener() {
    }

    public void onClick(View v) {
        if(BaseTweetView.this.getPermalinkUri() != null) {
            BaseTweetView.this.scribePermalinkClick();
            BaseTweetView.this.launchPermalink();
        }
    }
}

有任何想法吗?谢谢

最佳答案

最后,我使用自定义适配器(与您在问题中使用的适配器非常相似)完成了这项工作。此适配器从 super 实现中获取结果 View ,并添加一个 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); 
            } 
        } 
    }

}

完整代码示例 here .

希望能帮助到你。

关于twitter - 我可以使用 fabric sdk 在我的时间线上设置自定义 onClick 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29933868/

相关文章:

hadoop - 如何使用水槽获取实时推文?

java - Android 操作栏使用 customlitview 进行搜索

java - 在 Android 上,为什么 View.OnClickListener 实例可以像调用它们自己的方法一样调用它们父类的方法?

Android:如何显示 ics 任务切换器或检测用户是否单击该软键?

php - 动态按钮 Onclick 不起作用

python - 如何在 tweepy(python)中获取推文 ID(since_id、max_id)?

python - 超出 Twitter 速率限制。客户端每小时发出的请求不得超过 350 个

ios - 如何检查用户是否在 Twitter 上关注您?

android - 登录然后 ListView 的基本方法

android - 在 subview 上使用 onclicklistener 获取 JSON 对象