Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView项未单击_Java_Android_Listview_Android Listview_Listviewitem - Fatal编程技术网

Java ListView项未单击

Java ListView项未单击,java,android,listview,android-listview,listviewitem,Java,Android,Listview,Android Listview,Listviewitem,我有ListView的片段。ListViewItem具有web html链接的问题。不可单击@drawable/items\u选择器不起作用,当android:autoLink=“web”“android:DegenantFocusability=“BlocksDescents”没有帮助时,onItemClick不会被调用。解决方案也不起作用。我需要类似“hangouts”的listview项目或其他应用程序,其中选择了工作项,并且可以使用html链接等。请帮助我。 操作系统版本是安卓5.1.1

我有ListView的片段。ListViewItem具有web html链接的问题。不可单击@drawable/items\u选择器不起作用,当android:autoLink=“web”“android:DegenantFocusability=“BlocksDescents”没有帮助时,onItemClick不会被调用。解决方案也不起作用。我需要类似“hangouts”的listview项目或其他应用程序,其中选择了工作项,并且可以使用html链接等。请帮助我。 操作系统版本是安卓5.1.1

简单的XML…但不太管用。

 <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:descendantFocusability="blocksDescendants" 
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/items_selector"
  android:orientation="vertical"
  android:padding="2dp">

<TextView
    android:id="@+id/themeText"
    android:autoLink="web"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/layout_margin"
    android:paddingLeft="@dimen/layout_margin"
    android:paddingRight="@dimen/layout_margin"
    android:text="Bla bla bla"/>

</LinearLayout>
活动中:

 private class ThemesAdapter extends BaseAdapter {
    private LayoutInflater layoutInflater;
    private ArrayList<ForumThemeItem> mThemes;

    public ThemesAdapter(Context context, ArrayList<ForumThemeItem> themes) {
        this.mThemes = themes;
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        if (mThemes != null) {
            return mThemes.size();
        }
        return 0;
    }

    public void add(ArrayList<ForumThemeItem> themes){
        mThemes.addAll(themes);
    }

    public ForumThemeItem getItem(int position) {
        return mThemes.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ForumThemeItem mTheme = getItem(position);
        ThemesViewHolder viewHolder;

        if (convertView == null) {
            viewHolder = new ThemesViewHolder();
            convertView = layoutInflater.inflate(R.layout.item_theme, null);
            convertView.findViewById(R.id.ratingLayout).setVisibility(View.GONE);
            viewHolder.themePart = (TextView)convertView.findViewById(R.id.themePart);
            viewHolder.themeText = (TextView)convertView.findViewById(R.id.themeText);
            viewHolder.themeDate = (TextView)convertView.findViewById(R.id.themeDate);
            viewHolder.themeDateUpdate = (TextView)convertView.findViewById(R.id.themeDateUpdate);
            viewHolder.userNick = (TextView)convertView.findViewById(R.id.userNick);
            viewHolder.vote = (ImageView)convertView.findViewById(R.id.vote);
            viewHolder.viewsCount =(TextView)convertView.findViewById(R.id.viewsCount);
            viewHolder.replyCount =(TextView)convertView.findViewById(R.id.replyCount);
            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ThemesViewHolder) convertView.getTag();
        }


        viewHolder.vote.setVisibility(mTheme.isVote() ? View.VISIBLE : View.GONE);
        viewHolder.themeText.setText(Html.fromHtml(mTheme.getText()));
        viewHolder.userNick.setText(mTheme.getNick());
        viewHolder.themeDate.setText(mTheme.getCreateDate()+",");
        viewHolder.themeDateUpdate.setText(String.format("обн.: %s",mTheme.getDateUpdate()));
        viewHolder.viewsCount.setText(String.format("%s",mTheme.getViewsCount()));
        viewHolder.replyCount.setText(String.format("%s", mTheme.getRepliesCount()));

        if(mTheme.getPartSubName()==null){
            viewHolder.themePart.setText(mTheme.getPartName());
        }else{
            viewHolder.themePart.setText(String.format("%s (%s)",mTheme.getPartName(),mTheme.getPartSubName()));
        }

        if(!mTheme.isAnonymously()){
            switch (mTheme.getGender()){
                case "f":
                    viewHolder.userNick.setTextColor(getResources().getColor(R.color.woman));
                    break;
                case "m":
                    viewHolder.userNick.setTextColor(getResources().getColor(R.color.man));
                    break;
                case "n":
                    viewHolder.userNick.setTextColor(getResources().getColor(R.color.it));
                    break;
            }
        }else{
            viewHolder.userNick.setTextColor(getResources().getColor(R.color.default_text_color));
        }

        return convertView;
    }

    class ThemesViewHolder {
        TextView themePart;
        TextView themeDate;
        TextView themeDateUpdate;
        TextView themeText;
        TextView userNick;
        ImageView vote;
        TextView viewsCount;
        TextView replyCount;
    }
}
  viewHolder.themeText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mTextClickListener!=null){
                    mTextClickListener.onTextClick(position);
                }
            }
        });
@Override
public void onTextClick(int position) {
    mThemesList.performItemClick(mThemesList.getAdapter().getView(position, null, null), position, position);
}
但未选择项目(无填充灰色)


要使TextView html链接可单击,请执行以下操作

textView.setText(Html.fromHtml("your html text here"));
如果这是一个ListView项,我怀疑您必须在ListAdapter-getView或等效方法中执行此操作

或者您可以更新XML并添加以下文档


如果要单击整行,只需实现
OnClickListener

如果要单击整行和行内的链接(我认为这是您想要的):

  • 您必须创建一个
    自定义行项目
  • 创建一个
    界面
  • 将该
    接口侦听器
    发送到
    适配器
  • 检查文本是否包含链接。如果是,请使用侦听器发送 您可以访问该链接
大概是这样的:

interface OnWebLinkClick(){
    void onWebLinkClick(String url);
}
您可以在适配器上为
OnWebLinClick Listener
添加另一个参数:

public ThemesAdapter(Context context, ArrayList<ForumThemeItem> themes, OnWebLinClick mListener){
   this.mListener = mListener;   
} 
public ThemesAdapter(上下文上下文、数组列表主题、在Web上单击mListener){
this.mListener=mListener;
} 

检查文本是否包含链接,并实现
onWebLinkClick(urlOnTextView)
,然后在
webView

Thx中打开它。但是你不明白我的意思。我需要使用clickabel链接处理listview的可点击项。当android:autoLink=“web”时,不会调用onItemClick。通过添加代码扩展你的问题(适配器)可能更有助于解决问题OK。我添加了代码适配器。您需要设置OnClickListener是否只单击web链接或列表视图的整个单元格?我需要处理可单击的项目(选择)使用clickabel链接打开listview的链接。单击链接时打开链接。请查看图片。@GPPSoft您可以使用我的根布局选择器。但不起作用。@GPPSoft尝试将此
选择器设置为
每行的
背景
,而不是
根布局(listview)
。XML有一个“android:background”=“@drawable/items_selector”。查看我的代码。但不起作用:(@GPPSoft这是另一个问题,我也在尝试帮助解决这个问题,将该选择器添加到每行,而不是
listview
public ThemesAdapter(Context context, ArrayList<ForumThemeItem> themes, OnWebLinClick mListener){
   this.mListener = mListener;   
}