【问题标题】:can we have both of Button and onItemClick listener in ListView in android?我们可以在 android 的 ListView 中同时拥有 Button 和 onItemClick 侦听器吗?
【发布时间】:2014-05-13 04:53:04
【问题描述】:

ButtonListViewonClickListener 的每一行中都有Button。我也想将onItemSelectListener 添加到我的ListView。可能吗?如果是,我该怎么做?
任何帮助将不胜感激。

【问题讨论】:

标签: android android-listview onclicklistener onitemselectedlistener


【解决方案1】:

是的,有可能……

在为列表视图创建自定义视图适配器时,您必须在按钮上添加 onclicklistener 并且您还可能需要在 Listview 上添加 onItemSelectListener。 它会起作用的。

使用listview代码作为

listView = (ListView) findViewById(R.id.listView2);
      listView .setAdapter(new CustomListAdapter (this,userIDArr));


      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

              Toast.makeText(Activity.this,
                        "Item in position " + position + " clicked", Toast.LENGTH_LONG).show();
          }
        });

并像

一样创建适配器
public class CustomListAdapter extends ArrayAdapter<String>
{
    Activity context;
    public CustomListAdapter (Activity context, ArrayList<String> names) {
        super(context, R.layout.list_item, names);
        this.context = context;
    }
    private class ViewHolder {

        public TextView Description;
        public Button  UploadBtn;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        View rowView = convertView;
        if (rowView == null) {
            LayoutInflater inflater = context.getLayoutInflater();
            rowView = inflater.inflate(R.layout.list_item, null, true);
            holder = new ViewHolder();

            holder.Description = (TextView) rowView.findViewById(R.id.User_status);
            holder.UploadBtn = (Button) rowView.findViewById(R.id.uploadbutton);
            holder.UploadBtn.setOnClickListener(new View.OnClickListener() {  

                    public void onClick(View v) {  
                    Toast.makeText(Activity.this," Button clicked",Toast.LENGTH_SHORT).show();
                    }   
                }); 
                rowView.setTag(holder);
        } else {
            holder = (ViewHolder) rowView.getTag();
        }

        holder.Description.setText("U r in middle");
        return rowView;
    }
}

现在使用下面的代码来处理列表项内的点击

android:focusable="false"
android:focusableInTouchMode="false"

在创建 Button 标签时设置这些行

它会工作...... 请让我知道您的反馈..

【讨论】:

  • @Simple Plan .. 请看看我更新的答案.. 如果它对你有用,请告诉我
  • @NS 很棒。向我 +1。
  • 感谢您的关注。我应该在我的 singlelistitem 或 listview 中在哪里使用此代码 android:focusable="false" android:focusableInTouchMode="false"?
  • 您在哪里为自定义视图创建了布局。在按钮标签内使用这些行,您想在点击时对其进行操作
  • 在你的单项列表中。@max 请更新我的反馈
【解决方案2】:

有可能!!!

您可以在 android 中使用自定义视图或在 android 中使用自定义列表视图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多