【发布时间】:2021-06-13 22:11:08
【问题描述】:
视图为ListView 两个按钮(例如执行:呼叫、发送短信)。我想为点击按钮设置一个监听器。据我了解,如果我设置了OnItemSelectedListener,我将不知道点击了两个按钮中的哪一个。
当我为一个按钮设置监听器时,当我点击它时,我会得到列表中最后一项中相应按钮的监听器(不是我点击的那个)(这在编程上是有意义的)但是这不是我想要的。我可以说出来,因为它总是调用属于列表中最后一项的号码。
有关如何为每个项目中的多个视图设置 OnClick 的任何提示?
@NonNull
@Override
public View getView(final int position, @Nullable final View convertView, @NonNull ViewGroup parent) {
LayoutInflater inf = ((Activity)context).getLayoutInflater();
View view = inf.inflate(R.layout.place , parent , false);
name = view.findViewById(R.id.name);
type = view.findViewById(R.id.type);
minAge = view.findViewById(R.id.minAge);
open = view.findViewById(R.id.open);
close = view.findViewById(R.id.close);
distance = view.findViewById(R.id.distance);
phone = view.findViewById(R.id.phone);
picture = view.findViewById(R.id.picture);
btnCall = view.findViewById(R.id.btnCall);
final Place place = placeList.get(position);
// btnCall.setOnClickListener(this);
// I tried both setups with the same result.
// the button is always the one belonging to the last item in the list.
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = btnPhone.getText().toString();
}
});
// another button would have its own OnClick
name.setText(place.getName());
type.setText(place.getType());
minAge.setText(Integer.toString(place.getMinAge()));
open.setText(Integer.toString(place.getOpen()));
close.setText(Integer.toString(place.getClose()));
distance.setText(Integer.toString(place.getDistance()));
phone.setText(place.getPhone());
int id = context.getResources().getIdentifier("place"+position,"drawable" ,
((Activity)context).getPackageName());
//row_pic.setImageResource(id);
return view;
}
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phone.getText()));
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
}
if (intent.resolveActivity(context.getPackageManager()) != null)
{
context.startActivity(intent);
}
}
【问题讨论】:
-
为什么?为什么您使用查看与此项目相关的模型中的实际数据(最终放置位置)? (更不用说你没有重用视图)
标签: android list onclicklistener listadapter onitemselectedlistener