我们可以在自定义 ListView 中的项目(例如,TextViews、Images、Buttons)上添加 itemClickLIsener 吗?如果是?然后我们将在哪里编写监听器代码
问问题
134 次
3 回答
4
当然..你可以通过两种方式添加它
1)。通过在 xml 文件中定义函数并在自定义适配器类的 getview 或 bindview 中定义这些函数。
2)。或者通过在自定义适配器类的 bindview 或 getview 中定义 onclick 侦听器。
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
Button btn = (Button) view.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}
return view;
}
于 2013-07-02T09:35:37.503 回答
1
您可以在自定义 ListView 中定义的项目上添加 onClickListeners。参考下面的代码
holder.txtIncident.setOnClickListener
public View getView(final int position, View convertView,
ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.headline_item, null);
holder = new ViewHolder();
holder.txtIncident = (TextView) convertView
.findViewById(R.id.txtIncident);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtIncident.setText(String.valueOf(itemList.get(position)
.getIncident()));
holder.txtIncident.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
return convertView;
}
于 2013-07-02T09:28:01.870 回答
0
是的,您可以为每个列表项中的组件创建侦听器。您可以通过创建自定义列表适配器并在其 getView 方法中设置侦听器来做到这一点。
public class MyAdapter extends ArrayAdapter<String> {
private int resourceId;
private String[] objects;
public MyAdapter(Context context, int resourceId, String[] objects) {
super(context, resourceId,objects);
this.resourceId = resourceId;
this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(resourceId, null);
}
//Make sure that you use convertView.findViewById and not just findViewById!
TextView textView1 = convertView.findViewById(R.id.yourTextViewsId);
textView1.setText(objects[position]);
textView1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//do something here
}
});
return convertView;
}
}
于 2013-07-02T09:31:03.613 回答