第十五枪(实现ListView中Button点击事件监听)

1.main.xml

<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></RelativeLayout>2.listitem.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="wrap_content"android:descendantFocusability="blocksDescendants"android:orientation="horizontal" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="content"android:textColor="#ff0000"android:textSize="20sp" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:focusable="false"android:layout_alignParentRight="true"android:text="Button"android:textColor="#ff0000"android:textSize="20sp" /></RelativeLayout>3.ContentAdapter

package com.example.listviewchangetext;import java.util.List;import android.content.Context;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.TextView;public class ContentAdapter extends BaseAdapter {private static final String TAG = "ContentAdapter";private List<String> mContentList;private LayoutInflater mInflater;private MyClickListener mListener;public ContentAdapter(Context context, List<String> contentList,//构造方法MyClickListener listener) {mContentList = contentList;mInflater = LayoutInflater.from(context);mListener = listener;}@Overridepublic int getCount() {Log.i(TAG, "getCount");return mContentList.size();}@Overridepublic Object getItem(int position) {Log.i(TAG, "getItem");return mContentList.get(position);}@Overridepublic long getItemId(int position) {Log.i(TAG, "getItemId");return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Log.i(TAG, "getView");ViewHolder holder = null;if (convertView == null) {convertView = mInflater.inflate(R.layout.listitem, null);holder = new ViewHolder();holder.textView = (TextView) convertView.findViewById(R.id.textView1);holder.button = (Button) convertView.findViewById(R.id.button1);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.textView.setText(mContentList.get(position));holder.button.setOnClickListener(mListener);holder.button.setTag(position);return convertView;}public class ViewHolder {public TextView textView;public Button button;}/*** 用于回调的抽象类* @author Ivan Xu* 2014-11-26*/public static abstract class MyClickListener implements OnClickListener {/*** 基类的onClick方法*/@Overridepublic void onClick(View v) {myOnClick((Integer) v.getTag(), v);}public abstract void myOnClick(int position, View v);}}4.MainActivity.java

package com.example.listviewchangetext;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.Toast;import com.example.listviewchangetext.ContentAdapter.MyClickListener;public class MainActivity extends Activity implements OnItemClickListener {// 模拟listview中加载的数据private static final String[] CONTENTS = { "北京", "上海", "广州", "深圳", "苏州","南京", "武汉", "长沙", "杭州" };private List<String> contentList;private ListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {mListView = (ListView) findViewById(R.id.listview);contentList = new ArrayList<String>();for (int i = 0; i < CONTENTS.length; i++) {contentList.add(CONTENTS[i]);}//实例化ContentAdapter类,并传入实现类mListView.setAdapter(new ContentAdapter(this, contentList, mListener));mListView.setOnItemClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}//响应item点击事件@Overridepublic void onItemClick(AdapterView<?> arg0, View v, int position, long id) {Toast.makeText(this, "listview的item被点击了!,点击的位置是–>" + position,Toast.LENGTH_SHORT).show();}/*** 实现类,响应按钮点击事件*/private MyClickListener mListener = new MyClickListener() {@Overridepublic void myOnClick(int position, View v) {Toast.makeText(MainActivity.this,"listview的内部的按钮被点击了!,,位置是–>" + position + ",内容是–>"+ contentList.get(position), Toast.LENGTH_SHORT).show();}};}5.运行实例如下:

在人生的大海中,我们虽然不能把握风的大小,却可以调整帆的方向。

第十五枪(实现ListView中Button点击事件监听)

相关文章:

你感兴趣的文章:

标签云: