Java ListView行中一项的OnCLickListener

Java ListView行中一项的OnCLickListener,java,android,listview,Java,Android,Listview,我有一个列表视图,每行有多个项目。如何在custon ArrayAdapter类的getView()中仅为一项而不是ListView的整行设置OnCLickListener @NonNull @Override public View getView(final int position, @Nullable final View convertView, @NonNull final ViewGroup parent) { currentLayout = ge

我有一个列表视图,每行有多个项目。如何在custon ArrayAdapter类的getView()中仅为一项而不是ListView的整行设置OnCLickListener

 @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;
}

谢谢您的回答。

首先要澄清的是,
视图是行布局。要在子项上设置单击侦听器,只需按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
仅用于扩大视图,因此将使所有行上的所有侦听器都不可区分。在这种情况下,您可以直接从
viewholder

@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
                    }
                });
}

问题是,我使用的是LsitView而不是RecyclerView。在解决了这个问题并调用onCLick-in
onBindViewHolder
后,一切都很顺利。

只需在getview()中的视图上设置onCLick-listener即可。@Sarius您是在onBindViewHolder中设置侦听器的吗?哦,我是在getview中设置的,不是在onBindViewHolder中。但是我没有一个关于BindViewHolder的
类?不能骑它吗@SoroushA@Sarius这不是一门课。您应该在适配器中重写它。我更新了答案我正在ArrayAdapter类中做所有这些事情,我使用的是Listview,而不是RecyclerView。。。这有区别吗?因为我没有机会推翻它@SoroushA@Sarius用一个简单的阵列适配器是很难的。recyclerview已经具备了所有这些功能,将这些功能添加到带有适配器的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");

yourview.setonclickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            do your stuff here
        }
    });
return view;
}