How to make ListItem Textview to work as Twitter Tweets and get Different Linkify clicks?

后端 未结 1 1449
长情又很酷
长情又很酷 2020-12-18 16:32

For Eg :

Follow @SoccerBible, RT this & if Ronaldo scores https://bit.ly/133/com tonight we\'ll give away a pair of Nike Clash Vapor 8\'s to

相关标签:
1条回答
  • 2020-12-18 16:51

    For twitter app, I had also the same requirement to click on handles of tweets and also click on the text of tweet to get Tweet detail.

    For that I have used this LinkEnabledTextView and that become easy for me to do the task.

    I just added the class in my project and then in List Item instead simple TextView I used object/instance of the LinkEnabledTextView.

    There is a complete demo in above link, Please check that.

    EDIT: Adapter Code Specially check onTextLinkClick() and then holder.twtdata.setOnClickListener()

        private static class EfficientAdapter extends BaseAdapter implements TextLinkClickListener {
            private LayoutInflater mInflater;
            static int pos =0;
            public EfficientAdapter(Context context) {
                mInflater = LayoutInflater.from(context);
            }
    
            public int getCount() {
                return timelines.length;
            }
    
            public Object getItem(int position) {
                return position;
            }
    
            public long getItemId(int position) {
                return position;
            }
    
            public View getView(final int position, View convertView,
                    ViewGroup parent) {
    
                ViewHolder holder;
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.listtimerow, null);
                    holder = new ViewHolder();
                    holder.twtdata = (LinkEnabledTextView) convertView
                            .findViewById(R.id.twtdata);
                    holder.twtnm = (TextView) convertView
                            .findViewById(R.id.twthandle);
                    holder.twtimg = (ImageView) convertView
                            .findViewById(R.id.avatar);
                    holder.twtdt = (TextView) convertView
                            .findViewById(R.id.created);
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder) convertView.getTag();
                }
                   holder.twtdata.setOnTextLinkClickListener(this);
                    holder.twtdata.gatherLinksForText(timelines[position]);
                    holder.twtdata.setTextColor(Color.BLACK);
                    holder.twtdata.setLinkTextColor(Color.BLUE);
    
                    MovementMethod m = holder.twtdata.getMovementMethod();
                    if ((m == null) || !(m instanceof LinkMovementMethod)) {
                        if (holder.twtdata.getLinksClickable()) {
                            holder.twtdata.setMovementMethod(LinkMovementMethod.getInstance());
                        }
                    }
    
                if (bmpimg1[position] != null)
                    holder.twtimg.setImageBitmap(bmpimg1[position]);
                holder.twtnm.setText(twitterhandles[position]);
                Date credate = new Date(created[position]);
    
                String dt = credate.getDate() + " "
                        + getMonthName(credate.getMonth());
                holder.twtdt.setText(dt);
    
                holder.twtdata.setOnClickListener(new OnClickListener() {
    
                    public void onClick(View v) {
                        pos = position;
                        if(linkselected==true)
                            return;
                        childSelected = true;
    
                        Log.i("mention data", timelines[position]);
                        Intent textintent = new Intent(ctx, TimelineRe.class);
                        textintent.putExtra("userid", userid[position]);
                        textintent.putExtra("nm", twitterhandles[position]);
                        textintent.putExtra("msg", timelines[position]);
                        textintent.putExtra("pos", position);
                        textintent.putExtra("frm", "t");
                        textintent.putExtra("img", bmpimg1[position]);
    
                        if (urlentities[position] != null
                                && dpurlentities[position] != null) {
                        textintent.putExtra("urlentity", urlentities[position]);
                        textintent.putExtra("dpurlentity", dpurlentities[position]);
                        }
                        textintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
                        ctx.startActivity(textintent);
                    }
                });
                holder.twtnm.setOnClickListener(new OnClickListener() {
    
                    public void onClick(View v) {
                        childSelected = true;
                        Intent iconintent = new Intent(ctx, TweetRe.class);
                        iconintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        iconintent.putExtra("userid", userid[position]);
                        iconintent.putExtra("pos", position);
                        iconintent.putExtra("frm", "t");
                        iconintent.putExtra("img", bmpimg1[position]);
                        ctx.startActivity(iconintent);
                    }
                });
                holder.twtimg.setOnClickListener(new OnClickListener() {
    
                    public void onClick(View v) {
                        childSelected = true;
                        Intent iconintent = new Intent(ctx, TweetRe.class);
                        iconintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        iconintent.putExtra("userid", userid[position]);
                        iconintent.putExtra("pos", position);
                        iconintent.putExtra("frm", "t");
                        iconintent.putExtra("img", bmpimg1[position]);
                        ctx.startActivity(iconintent);
                    }
                });
                return convertView;
    
            }
            @Override 
            public int getItemViewType(int position) { 
                return position; 
            } 
    
            @Override 
            public int getViewTypeCount() { 
                return timelines.length;
            } 
            static class ViewHolder {
    
                TextView twtdt;
                LinkEnabledTextView twtdata;
                ImageView twtimg;
                TextView twtnm;
            }
    
            public void onTextLinkClick(View textView, String clickedString)
            {
                if (isWiFiConnected == false) {
                    Toast.makeText(ctx,
                            "No Internet Connection \nPlease Check and Retry",
                            Toast.LENGTH_SHORT).show();
    
                    return;
                }
                android.util.Log.v("Hyperlink clicked is :: " + clickedString, "Hyperlink clicked is :: " + clickedString);
                if(clickedString.charAt(0)=='#')
                {
                    linkselected=true;
                    childSelected=true;
                    Intent reintent = new Intent(ctx,
                            Search.class);
                    reintent.putExtra("frm", "l");
                    reintent.putExtra("keyword",clickedString.substring(1, clickedString.length()) );
                    reintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    ctx.startActivity(reintent);
                }
                else if(clickedString.charAt(0)=='@')
                {
                    linkselected=true;
                    childSelected=true;
                    Intent iconintent = new Intent(ctx, TweetRe.class);
                    iconintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    iconintent.putExtra("snm", clickedString.substring(1,clickedString.length()));
                    iconintent.putExtra("frm", "l");
    //              iconintent.putExtra("userid", userid[pos]);
    //              iconintent.putExtra("pos", pos);
    
    //              iconintent.putExtra("img", bmpimg2[pos]);
                    ctx.startActivity(iconintent);
                }
                else if(clickedString.charAt(0)=='h')
                {
                    linkselected=true;
                    childSelected=true;
                    Intent iconintent = new Intent(ctx, ShowLink.class);
                    iconintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    iconintent.putExtra("url","http://www."+dpurlentities[pos]);
                    ctx.startActivity(iconintent);
    
                }
            }
        }
    
    0 讨论(0)
提交回复
热议问题