gpt4 book ai didi

java - ListView 行中一项的 OnCLickListener

转载 作者:行者123 更新时间:2023-11-30 10:26:37 25 4
gpt4 key购买 nike

我有一个 ListView,每行填充了多个项目。我如何在自定义 ArrayAdapter 类的 getView() 中为一个项目设置 OnCLickListener,而不是 ListView 的整行?

 @NonNull
@Override
public View getView(final int position, @Nullable final View convertView, @NonNull final ViewGroup parent) {
currentLayout = getItem(position);
myViewHolder= null;
view = convertView;

if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(R.layout.rowlayout, parent, false);
myViewHolder= new ViewHolder(view);
view.setTag(myViewHolder);
}

myViewHolder= (ViewHolder) view.getTag();


myViewHolder.content.setText(currentLayout.getContent());
myViewHolder.number.setText("1");




return view;
}

感谢您的回答。

最佳答案

首先要说明的是,您膨胀的 view 是行布局。为了在子项目上设置点击监听器,只需通过 id 找到该项目,然后设置监听器:

//It can be any type of view that supports on click listener
//Using TextView as an example
//Don't forget to assign an id to the child in xml
TextView childView = (TextView) view.findViewById(R.id.enter_child_id);

childView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Do something
}
});

要为不同的行设置不同的监听器,最好在 onBindViewHolder 而不是 getView 中设置监听器。 getView 仅用于膨胀 View ,因此将使所有行上的所有监听器不可区分。在这种情况下,您可以直接从 viewholder

中提取 View 或 subview
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
TextView childView = holder.childView;
childView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Do something
}
});
}

关于java - ListView 行中一项的 OnCLickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com