我有一个自定义列表视图,列表视图项有一个按钮,我无法单击列表项本身,唯一可点击的是按钮。
我希望能够单独点击列表项和按钮。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
itemView = (itemView == null) ? inflater.inflate(R.layout.listview_layout, null) : itemView;
TextView textViewName = itemView.findViewById(R.id.headtext);
TextView textViewDescription = itemView.findViewById(R.id.disctext);
ImageView stationImage = itemView.findViewById(R.id.image);
//ImageButton favButton = itemView.findViewById(R.id.favbutton);
FloatingActionButton favButton = itemView.findViewById(R.id.favbutton);
Station selectedStation = stations.get(position);
textViewName.setText(selectedStation.getStationName());
textViewDescription.setText(selectedStation.getDescription());
stationImage.setImageResource(selectedStation.getStationImg());
checkFavForBtn(favButton, selectedStation);
favButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
LibraryUtil.setFavoritesLibrary(selectedStation, context);
System.out.println("Saving");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
checkFavForBtn(favButton, selectedStation);
//notifyDataSetChanged();
}
});
return itemView;
}
点击列表视图的监听器 -
lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//my code
}
});
我该怎么办? 提前谢谢!
找到解决方案
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent serviceIntent = new Intent(finalItemView.getContext(), BackgroundSoundService.class);
serviceIntent.putExtra("position", position);
serviceIntent.putExtra("whatlibrary", 1);
finalItemView.getContext().startService(serviceIntent);
}
});
favButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
LibraryUtil.setFavoritesLibrary(selectedStation, context);
System.out.println("Saving");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
checkFavForBtn(favButton, selectedStation);
//notifyDataSetChanged();
}
});
答案 0 :(得分:1)
You are handling favbutton on click listener .thats why only button click is working.
尝试处理整个视图onclickListiner
如下所示
// onClick listener for view
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something when the corky is clicked
}
});
第二种方式:
这样实施 公共类BookListActivity扩展Activity实现OnItemClickListener
并且过度使用下面的方法
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {`\
//在这里点击您的点击功能 }
希望它对你有所帮助。让我知道
答案 1 :(得分:0)
在按钮中添加
android:focusable="false"
android:focusableInTouchMode="false"
由于按钮是可点击的,因此整个视图不会聚焦。 添加此行将帮助您单击项目视图以及视图中的按钮
答案 2 :(得分:0)
A.F.A.I.K。
在list_item
中使用Button或ImageView时,
您将无法正确使用OnItemClickListener。
因为他们有自己的专注,因此不会让list_item
集中注意力。
您必须在按钮和list_item
的父版面上单独设置OnClickListener。