【问题标题】:Buttons in ListView inside array adapter & fragment - Android数组适配器和片段内的 ListView 中的按钮 - Android
【发布时间】:2015-03-11 20:03:54
【问题描述】:

我正在创建一个应用程序,其中有一个包含列表视图的Fragment,这个ListView 托管在主活动中。

列表中的每个项目都包含 10-20 个按钮。如何将点击监听器附加到它们并在点击时执行操作,IE 更新屏幕上的信息?

编辑:更多信息

listFragment 内部:

public void myButtonHandler(View view){
//Handles method actions
}

主要活动内部:

public void myButtonHandler(View v){listFragment.myButtonHandler(v);

}

错误:

05-09 11:15:27.900    7122-7122/project.rapid.proto E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: project.rapid.proto, PID: 7122
java.lang.IllegalStateException: Could not find a method myButtonHandler(View) in the activity class android.app.Application for onClick handler on view class android.widget.ImageButton with id 'required2'

按钮单击对片段中包含的信息执行操作,这就是我尝试调用的原因。

【问题讨论】:

  • 请阅读How to Ask。你试过什么?你做了什么研究?你有错误吗?你能给我们看一些代码吗?

标签: android android-fragments android-listview android-adapter


【解决方案1】:

第一件事:

  1. 您的 ListView 应该在您的 Fragment 中,而不是在您的主要活动中。

至于你的问题:

在您的自定义数组适配器中,您可以为每个按钮设置点击侦听器来执行您想要的类似操作:

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.YOUR_CUSTOM_LAYOUT, null);
                holder = new ViewHolder();
                // Set ViewHolder views to your custom views
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            // Set your different views via holder.yourView.setText(), etc.
            // Set your click listeners for the views you want via
            holder.myButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    //Do what you want
                }

            });
            return convertView;
        }

【讨论】:

【解决方案2】:

您可以使用适配器-getView() 例如:

@Override
public View getView(int position, View convertView, ViewGroup parent){
    View v=super.getView(position, convertView, parent); 
    View clickView=v.findViewById(R.id.clickView);
    clickView.setOnClickListener(this);
}

【讨论】:

  • 我认为这实际上可以满足我的需要。我会尝试并回复。
猜你喜欢
  • 2019-04-14
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多