ListView里面的数组适配器&片段 - Android

时间:2014-05-09 14:59:53

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

我有一个我正在创建的应用程序,其中有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'

按钮点击对片段内包含的信息执行操作,这就是我尝试通过的原因。

2 个答案:

答案 0 :(得分:0)

首先要做的事情:

  1. 您的ListView应该在您的片段内,而不是您的主要活动。
  2. 关于你的问题:

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

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

答案 1 :(得分:0)

你可以使用adapter-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);
}