gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:10:21 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com