joe smite
joe smite

Reputation: 98

ListView Custom Adapter OnClick launch URL link

Hi so I'm trying to create an onclick event which will send the user to a link. However I couldn't figure out how to get it to work.

This is my Custom Adapter getview function

   public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        int rowType = getItemViewType(position);

        if (convertView == null) {
            holder = new ViewHolder();
            switch (rowType) {
                case TYPE_ITEM:
                    convertView = mInflater.inflate(R.layout.program_list, null);
                    holder.textView = (TextView) convertView.findViewById(R.id.textView1);
                    holder.imgView = (ImageView) convertView.findViewById(R.id.imageView1);
                    break;
                case TYPE_SEPARATOR:
                    convertView = mInflater.inflate(R.layout.program_header, null);
                    holder.textView = (TextView) convertView.findViewById(R.id.textSeparator);
                    break;
            }
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        if(imageData.get(position) == null) {
            holder.textView.setText(mData.get(position));
        }
        else {
            holder.textView.setText(mData.get(position));
            holder.imgView.setImageResource(imageData.get(position));
        }


        return convertView;
    }

I have an ArrayList with url strings in it. This ArrayList is called linkData. I have tried multiple ways but couldnt figure out how to make it work. I tried to add these functions, 1 in the custom adapter to return the url:

public String getLink(int position) {
    return linkData.get(position);
}

and this in the mainactivity.java where m_listview is the listview and mAdapter is the custom adapter

   m_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (mAdapter.getLink(position) == null) {}
            else {
                String linked = mAdapter.getLink(position);
                Uri url = Uri.parse(linked);
                Intent intent = new Intent(Intent.ACTION_VIEW, url);
                startActivity(intent);
            }
        }
    });

}

This however only causes my app to crash instead of going anywhere.

Any help and expertise on the matter would be greatly appreciated. Thanks!

Here is the error logcat as requested.

04-23 10:18:01.528 1818-1818/com E/InputEventReceiver: Exception dispatching input event.
04-23 10:18:01.528 1818-1818/com E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
04-23 10:18:01.530 1818-1818/com E/MessageQueue-JNI: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.aa.com/homePage.do?locale=en_US }
                                                                              at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
                                                                              at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
                                                                              at android.app.Activity.startActivityForResult(Activity.java:3736)
                                                                              at android.app.Activity.startActivityForResult(Activity.java:3697)
                                                                              at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
                                                                              at android.app.Activity.startActivity(Activity.java:4007)
                                                                              at android.app.Activity.startActivity(Activity.java:3975)
                                                                              at com.MainActivity$2.onItemClick(MainActivity.java:91)
                                                                              at android.widget.AdapterView.performItemClick(AdapterView.java:300)
                                                                              at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
                                                                              at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
                                                                              at android.widget.AbsListView.onTouchUp(AbsListView.java:3845)
                                                                              at android.widget.AbsListView.onTouchEvent(AbsListView.java:3617)
                                                                              at android.view.View.dispatchTouchEvent(View.java:8388)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                              at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
                                                                              at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
                                                                              at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
                                                                              at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
                                                                              at android.view.View.dispatchPointerEvent(View.java:8578)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                              at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
                                                                              at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
                                                                              at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
                                                                              at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
                                                                              at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                              at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                            at android.os.Mes
04-23 10:18:01.530 1818-1818/com D/AndroidRuntime: Shutting down VM


                                                                        --------- beginning of crash
04-23 10:18:01.530 1818-1818/com E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com, PID: 1818
                                                                        android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.aa.com/homePage.do?locale=en_US }
                                                                            at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
                                                                            at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
                                                                            at android.app.Activity.startActivityForResult(Activity.java:3736)
                                                                            at android.app.Activity.startActivityForResult(Activity.java:3697)
                                                                            at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
                                                                            at android.app.Activity.startActivity(Activity.java:4007)
                                                                            at android.app.Activity.startActivity(Activity.java:3975)
                                                                            at com.MainActivity$2.onItemClick(MainActivity.java:91)
                                                                            at android.widget.AdapterView.performItemClick(AdapterView.java:300)
                                                                            at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
                                                                            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
                                                                            at android.widget.AbsListView.onTouchUp(AbsListView.java:3845)
                                                                            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3617)
                                                                            at android.view.View.dispatchTouchEvent(View.java:8388)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
                                                                            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172)
                                                                            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
                                                                            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
                                                                            at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
                                                                            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
                                                                            at android.view.View.dispatchPointerEvent(View.java:8578)
                                                                            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
                                                                            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
                                                                            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
                                                                            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578)
                                                                            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
                                                                            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
                                                                            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
                                                                            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
                                                                            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
                                                                            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
                                                                            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
                                                                            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
                                                                            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
                                                                            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                            at android

Upvotes: 0

Views: 1145

Answers (1)

Patel Vicky
Patel Vicky

Reputation: 776

try to this:-

m_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (mAdapter.getLink(position) == null) {}
            else {
                String linked = mAdapter.getLink(position);
                Uri url = Uri.parse("https://"+linked);
                Intent intent = new Intent(Intent.ACTION_VIEW, url);
                startActivity(intent);
            }
        }
    });

}

Upvotes: 1

Related Questions