activity响应listview中button点击事件

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

@Override
public void onClick(View v) {
    listener.click(v);
}

interface MyListener {
    void click(View view);
}

@Override
public int getCount() {
    return list.size();
}

@Override
public String getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public 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);
}

@Override
public void click(View view) {
    int position= (int) view.getTag();
    Toast.makeText(MainActivity.this,"按钮点击"+list.get(position),Toast.LENGTH_SHORT).show();
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Toast.makeText(MainActivity.this,list.get(position),Toast.LENGTH_SHORT).show();
}

}

猜你喜欢

转载自blog.csdn.net/forzhers/article/details/62231069
今日推荐