如何在MainActivity中设置Listview的Childitem Clicklistener而不是在适配器中(在android中)?

时间:2017-02-05 17:27:18

标签: android listview android-adapter onitemclicklistener

嘿伙计这是我关于stackoverflow的第一个问题。 我几乎在一个月内搜索一个主题,但没有找到任何相关的答案。

我想将 clicklistner设置为主要活动中的列表子项

我了解Listview.setOnItemClickListner ...并且还知道如何设置listview的子项目在自己的适配器中单击。

但我不想要这个..
我想设置listview的子项目,点击主要活动

这是我点击列表项的主要活动代码...

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, final long id) {


            final TextView tx;
            tx=(TextView)view.findViewById(R.id.textList);



            tx.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(listviewclick_Activity.this, "in=    "+String.valueOf(position), Toast.LENGTH_SHORT).show();      // clicking for textview on list   
                }
            });



            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(listviewclick_Activity.this,"out=   "+ String.valueOf(position), Toast.LENGTH_SHORT).show();  // clicking for whole listitem
                }
            });


        }
    });

此代码工作正常但存在用户必须先单击的问题 之后的所有点击将被设置...

请记住,我不想在适配器中单击一个子项目。我只想在主要活动中点击它。 希望得到一个好的答案...

1 个答案:

答案 0 :(得分:0)

我不明白你在做什么但是这一部分:

 view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(listviewclick_Activity.this, "out=   " + String.valueOf(position), Toast.LENGTH_SHORT).show();  // clicking for whole listitem
        }
    });

错误!,因为view是已经点击的列表视图项(行)。

取而代之的是:

Toast.makeText(listviewclick_Activity.this, "out=   " +String.valueOf(position),Toast.LENGTH_SHORT).show();  // clicking for whole listitem

这一部分:

tx.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(listviewclick_Activity.this, "in=    "+String.valueOf(position), Toast.LENGTH_SHORT).show();      // clicking for textview on list   
                }
            });
除非单击listview项,否则

将无效,因此您应将其移至适配器内。