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
都在适配器中?你的活动/片段中有什么?用你的设计解释你的疑问。