Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 如何让TextView onClickListener工作?_Java_Android_Onclicklistener_Textview - Fatal编程技术网

Java 如何让TextView onClickListener工作?

Java 如何让TextView onClickListener工作?,java,android,onclicklistener,textview,Java,Android,Onclicklistener,Textview,我花了三天的时间试图弄清楚如何在我的代码中使用TextViewonClickListener。我尝试了不同的方法,我在Stackflow中阅读了很多解决方案,但没有一个适合我的代码。我几乎找到了解决办法,但仍然不起作用。我是一名学生,我的导师建议我在数组中添加代码,我就是这么做的 在我的应用程序中,我希望当单击带有id title\u宋的TextView时,带有id selecteditem的项目TextView显示歌曲的标题。歌曲标题在列表视图中,文本视图selecteditem在布局中 代码

我花了三天的时间试图弄清楚如何在我的代码中使用
TextView
onClickListener
。我尝试了不同的方法,我在Stackflow中阅读了很多解决方案,但没有一个适合我的代码。我几乎找到了解决办法,但仍然不起作用。我是一名学生,我的导师建议我在数组中添加代码,我就是这么做的

在我的应用程序中,我希望当单击带有
id title\u宋的
TextView
时,带有
id selecteditem的项目
TextView
显示歌曲的标题。歌曲标题在列表视图中,文本视图selecteditem在布局中

代码如下:-

package com.example.android.myapplication;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.ArrayList;

import static com.example.android.myapplication.R.id.selecteditem;
import static com.example.android.myapplication.R.id.title_song;


public class SongAdapter extends ArrayAdapter<Song> implements View.OnClickListener {

    public SongAdapter(Context context, ArrayList<Song> pSongs)  {
        super(context,0, pSongs);
    }

    //**
    // titleSong is displayed in TextView
    // when item TitleSong is clicked in the ListView Song
    //*

    private TextView titleSong;
    private TextView selectedSong;

    @Override
    public void onClick(View v) {
        titleSong =(TextView) titleSong.findViewById(R.id.title_song);
        selectedSong =(TextView) selectedSong.findViewById(R.id.selecteditem);

        titleSong.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(selectedSong.getId() == R.id.title_song){
                    selectedSong.setText(R.id.title_song);
                }
            }
        });
    }


    //**
    // Provides a view for an AdapterView (ListView, GridView, etc.)
    // @param position The AdapterView position that is requesting a view
    // @param parent The parent ViewGroup that is used for inflation
    // @return The View for the position in the AdapterView

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        // Check if the existing view is being reused, otherwise inflate the view
        View listItemView = convertView;

        if(listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);
        }
        Song local_song = getItem(position);

        TextView titleTextView = (TextView) listItemView.findViewById(title_song);
        titleTextView.setText(local_song.getTitleSong());

        TextView artistTextView = (TextView) listItemView.findViewById(R.id.artist_song);
        artistTextView.setText(local_song.getArtistSong());

        return listItemView;
    }

}
package com.example.android.myapplication;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入静态com.example.android.myapplication.R.id.selecteditem;
导入静态com.example.android.myapplication.R.id.title\u song;
公共类SongAdapter扩展ArrayAdapter实现View.OnClickListener{
公共SongAdapter(上下文,ArrayList pSongs){
超级(上下文,0,pSongs);
}
//**
//标题歌曲显示在文本视图中
//在ListView歌曲中单击项目标题Song时
//*
私有文本视图标题歌曲;
私有文本视图选择歌曲;
@凌驾
公共void onClick(视图v){
titleSong=(TextView)titleSong.findViewById(R.id.title\u song);
selectedSong=(TextView)selectedSong.findViewById(R.id.selecteditem);
titleSong.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(selectedSong.getId()==R.id.title\u歌曲){
selectedSong.setText(R.id.title\u song);
}
}
});
}
//**
//为AdapterView(ListView、GridView等)提供视图
//@param position请求查看的适配器视图位置
//@param parent用于充气的父视图组
//@返回AdapterView中位置的视图
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//检查现有视图是否正在重新使用,否则会膨胀视图
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).inflate(
R.layout.list_项,父项,false);
}
Song local_Song=getItem(位置);
TextView titleTextView=(TextView)listItemView.findViewById(title_song);
titleTextView.setText(local_song.getTitleSong());
TextView artistTextView=(TextView)listItemView.findViewById(R.id.artist\u song);
artistTextView.setText(local_song.getArtistSong());
返回listItemView;
}
}
当然,我犯了很多错误,第一个错误是,
setText
对于我想要达到的目标来说是不正确的,我知道这一点,但这是我所知道的最相似的。

使用这些

 all = (TextView) this.findViewById(R.id.viewall);
 pdf = (TextView) this.findViewById(R.id.pic);
在“创建然后设置”对话框中

oncreate()方法中的all.setOnclickListener(此)也会出现错误。在显示错误时实现onClicklistener。它会像符咒一样起作用

已编辑

TextView btn=(TextView) findViewById(R.id.accInfo);
btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //DO you work here
        }
    });
将ClickListener设置为TextView将自动使其可点击,因此无需

android:clickable="true"

我没有看到在textview上调用setOnClickListener(this)。你有那个密码吗。在getView中发布完整的代码集侦听器。并查找自定义列表视图教程。为什么id为的
title\u song
selecteditem
textview
都在适配器中?你的活动/片段中有什么?用你的设计解释你的疑问。