【发布时间】:2014-01-03 10:09:17
【问题描述】:
我有一个 listView,每行有一个 TextView 和 3 个按钮。 现在我需要的是 - 每当单击 Button 时,该特定行中 textView 的值。
列表视图
[文本][按钮 1][按钮 2][按钮 3]
[文本][按钮 1][按钮 2][按钮 3]
[文本][按钮 1][按钮 2][按钮 3]
有什么建议吗?
我的代码:
public class UserCustomAdapter extends ArrayAdapter<User> {
Context context;
int layoutResourceId;
ArrayList<User> data = new ArrayList<User>();
public UserCustomAdapter(Context context, int layoutResourceId,
ArrayList<User> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
UserHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserHolder();
holder.textName = (TextView) row.findViewById(R.id.label);
holder.btn1 = (Button) row.findViewById(R.id.button1);
holder.btn2 = (Button) row.findViewById(R.id.button2);
holder.btn3 = (Button) row.findViewById(R.id.button3);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
User user = data.get(position);
holder.textName.setText(user.getName());
holder.textName.setTag(position);
holder.btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Delete Button Clicked", "**********");
Toast.makeText(context, "B 1 button Clicked" + position,
Toast.LENGTH_LONG).show();
}
});
holder.btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Delete Button Clicked", "**********");
Toast.makeText(context, "B 2 button Clicked" + position,
Toast.LENGTH_LONG).show();
}
});
holder.btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Delete Button Clicked", "**********");
Toast.makeText(context, "B 3 button Clicked" + position,
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class UserHolder {
TextView textName;
Button btn1;
Button btn2;
Button btn3;
}
}
【问题讨论】:
-
在你的
onclick中写String name=holder.textName.getText().toString(); -
你需要文本视图的值还是需要知道点击了哪个按钮?
标签: android listview button onclick android-arrayadapter