activity响应listview中button点击事件

来源:互联网 发布:ubuntu glib版本 编辑:程序博客网 时间:2024/05/05 15:16

1。在button的xml中增加属性focusable=false;
2。adapter中通过接口把事件传递过去,
3。activity集成接口处理点击事件
4。adaper
public class ListAdapter extends BaseAdapter implements View.OnClickListener {
List list;
Context context;
MyListener listener;

public ListAdapter(List<String> list, Context context, MyListener listener) {    this.list = list;    this.context = context;    this.listener = listener;}@Overridepublic void onClick(View v) {    listener.click(v);}interface MyListener {    void click(View view);}@Overridepublic int getCount() {    return list.size();}@Overridepublic String getItem(int position) {    return list.get(position);}@Overridepublic long getItemId(int position) {    return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {    ViewHolder vh;    if (convertView == null) {        convertView = LayoutInflater.from(context).inflate(R.layout.listlayout, parent, false);        vh = new ViewHolder();        vh.tv = (TextView) convertView.findViewById(R.id.tv);        vh.btn = (Button) convertView.findViewById(R.id.btn);        convertView.setTag(vh);    } else {        vh = (ViewHolder) convertView.getTag();    }    vh.tv.setText(list.get(position));    vh.btn.setOnClickListener(this);    vh.btn.setTag(position);    return convertView;}class ViewHolder {    TextView tv;    Button btn;}

}

5。activity
public class MainActivity extends Activity implements AdapterView.OnItemClickListener,ListAdapter.MyListener{
ListView lv;
List list=new ArrayList<>();
ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv= (ListView) findViewById(R.id.lv);
for (int i = 0; i <20 ; i++) {
list.add(String.valueOf(i));
}
adapter=new ListAdapter(list,MainActivity.this,this);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
}

@Overridepublic void click(View view) {    int position= (int) view.getTag();    Toast.makeText(MainActivity.this,"按钮点击"+list.get(position),Toast.LENGTH_SHORT).show();}@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {    Toast.makeText(MainActivity.this,list.get(position),Toast.LENGTH_SHORT).show();}

}

0 0
原创粉丝点击