【问题标题】:ListView Custom Adapter OnClick launch URL linkListView 自定义适配器 OnClick 启动 URL 链接
【发布时间】:2016-04-23 11:27:05
【问题描述】:

您好,我正在尝试创建一个 onclick 事件,该事件会将用户发送到一个链接。但是我不知道如何让它工作。

这是我的自定义适配器 getview 函数

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

我有一个包含 url 字符串的 ArrayList。此 ArrayList 称为 linkData。我尝试了多种方法,但无法弄清楚如何使其工作。我尝试添加这些函数,1在自定义适配器中返回url:

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

这在 mainactivity.java 中,其中 m_listview 是列表视图,mAdapter 是自定义适配器

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

}

然而,这只会导致我的应用崩溃而不是去任何地方。

我们将不胜感激任何有关此事的帮助和专业知识。谢谢!

这是请求的错误日志。

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

【问题讨论】:

  • 把你的错误logcat。
  • 我已经编辑了我的原始帖子以包含错误 logcat。

标签: java android listview android-studio


【解决方案1】:

试试这个:-

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

}

【讨论】:

  • 它工作。谢谢你,我欠你一个。除了我所做的是 String linked = "https://"+ mAdapter.getLink(position); Uri url = Uri.parse(linked); Intent intent = new Intent(Intent.ACTION_VIEW, url);开始活动(意图);
猜你喜欢
  • 2019-06-14
  • 1970-01-01
  • 2012-07-27
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多