The important thing is that MyActivity and getContext() of CustomAdapter must be the same instance. Compare yours with mine.
My codes are:
MyActivity.java
public class MyActivity extends Activity { public static final String TAG = "MyActivity"; private ListView mListView; private CustomAdapter mAdapter; private ArrayList<String> mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); mListView = (ListView) findViewById(R.id.listView); mData = new ArrayList<String>(); mData.add("111"); mData.add("222"); mData.add("333"); mData.add("444"); mData.add("555"); mAdapter = new CustomAdapter(this, R.layout.list_item_view, mData); mListView.setAdapter(mAdapter); } public void onClickHandler(View view) { Log.i(TAG, "onClickHandler()"); } }
CustomAdapter.java
public class CustomAdapter extends ArrayAdapter<String> { public CustomAdapter(Context context, int resource, ArrayList<String> objects) { super(context, resource, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.list_item_view, null); } return convertView; } }
activity_my.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MyActivity"> <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout>
list_item_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:id="@+id/button" android:onClick="onClickHandler"/> </LinearLayout>
source share