自定义ListView带按钮,列表项无法点击

时间:2018-02-06 10:05:08

标签: android listview adapter

我有一个自定义列表视图,列表视图项有一个按钮,我无法单击列表项本身,唯一可点击的是按钮。

  

我希望能够单独点击列表项和按钮。

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

3 个答案:

答案 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中使用ButtonImageView时,

您将无法正确使用OnItemClickListener

因为他们有自己的专注,因此不会让list_item集中注意力。

您必须在按钮和list_item的父版面上单独设置OnClickListener