Pan*_*nos 5 android listview onclick button
我有一个从自定义适配器填充的ListView.每行中都有1个按钮.在xml中,按钮具有传递的onClick属性.我只有xml,而不是任何OnClickListeners集.另请注意,我的CustomActivity中存在public void myMethod(View v).我得到以下异常
10-02 03:01:46.463: E/AndroidRuntime(26857): java.lang.IllegalStateException: Could not find a method myClickHandler(View) in the activity class **android.app.Application** for onClick handler on view class android.widget.Button with id 'myButton'
Run Code Online (Sandbox Code Playgroud)
活动方法:
public void myClickHandler(View v) {
... do stuff here...
}
Run Code Online (Sandbox Code Playgroud)
按钮XML:
<Button
android:id="@+id/myButton"
android:layout_width="44dp"
android:layout_height="44dp"
android:background="@drawable/eye_icon"
android:onClick="myClickHandler"
/>
Run Code Online (Sandbox Code Playgroud)
异常中的一个有趣的注释是该应用程序试图在android.app.Application中找到该方法, 而不是在我的自定义Activity中.
有什么建议?
小智 3
重要的是MyActivity和getContext()ofCustomAdapter必须是同一个实例。比较你的和我的。
我的代码:
\n\n我的活动.java
\n\npublic class MyActivity extends Activity {\n public static final String TAG = "MyActivity";\n private ListView mListView;\n private CustomAdapter mAdapter;\n private ArrayList<String> mData;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_my);\n\n mListView = (ListView) findViewById(R.id.listView);\n\n mData = new ArrayList<String>();\n mData.add("111");\n mData.add("222");\n mData.add("333");\n mData.add("444");\n mData.add("555");\n\n mAdapter = new CustomAdapter(this, R.layout.list_item_view, mData);\n mListView.setAdapter(mAdapter);\n }\n\n public void onClickHandler(View view) {\n Log.i(TAG, "onClickHandler()");\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n自定义适配器.java
\n\npublic class CustomAdapter extends ArrayAdapter<String> {\n\n public CustomAdapter(Context context, int resource, ArrayList<String> objects) {\n super(context, resource, objects);\n }\n\n @Override\n public View getView(int position, View convertView, ViewGroup parent) {\n if (convertView == null) {\n LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n convertView = inflater.inflate(R.layout.list_item_view, null);\n }\n\n return convertView;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n活动_my.xml
\n\n<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n android:layout_width="match_parent"\n android:layout_height="match_parent"\n android:paddingLeft="@dimen/activity_horizontal_margin"\n android:paddingRight="@dimen/activity_horizontal_margin"\n android:paddingTop="@dimen/activity_vertical_margin"\n android:paddingBottom="@dimen/activity_vertical_margin"\n tools:context=".MyActivity">\n\n <ListView\n android:id="@+id/listView"\n android:layout_width="fill_parent"\n android:layout_height="fill_parent" />\n\n</RelativeLayout>\nRun Code Online (Sandbox Code Playgroud)\n\n列表项视图.xml
\n\n<?xml version="1.0" encoding="utf-8"?>\n\n<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\n android:orientation="vertical"\n android:layout_width="match_parent"\n android:layout_height="match_parent">\n <Button\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="Button"\n android:id="@+id/button"\n android:onClick="onClickHandler"/>\n</LinearLayout>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |