我正在使用LazyAdaptor创建一个列表视图,其中包含我正在从Web服务器解析的一些数据。每一行都有一个ImageView,就像一个按钮,当我点击ImageView时我想要做的就是检索名为“reference”的行中的值。我试图将Toast作为一种快速方法来确保我抓住正确的参考ID。我添加了一个OnClick方法,并能够检索“位置”,但不知道如何获取引用ID。任何帮助,将不胜感激。
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
RowHolder holder = null;
if (convertView == null) {
vi = inflater.inflate(R.layout.group_view, null);
holder = new RowHolder();
holder.reference = (TextView) vi.findViewById(R.id.reference);
holder.name = (TextView) vi.findViewById(R.id.name);
holder.vicinity = (TextView) vi.findViewById(R.id.vicinity);
holder.checkin = (ImageView) vi.findViewById(R.id.check_in);
vi.setTag(holder);
} else {
holder = (RowHolder) vi.getTag();
}
HashMap<String, String> placeList = new HashMap<String, String>();
placeList = data.get(position);
holder.reference.setText(placeList.get(MainActivity.KEY_REFERENCE));
holder.name.setText(placeList.get(MainActivity.KEY_NAME));
holder.vicinity.setText(placeList.get(MainActivity.KEY_VICINITY));
holder.checkin.setTag(position);
holder.checkin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, v.getTag().toString(), Toast.LENGTH_SHORT).show();
}
});
return vi;
}
答案 0 :(得分:4)
试试这个,
holder.checkin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, placeList.get(MainActivity.KEY_REFERENCE), Toast.LENGTH_SHORT).show();
}
});
和
final HashMap<String, String> placeList = new HashMap<String, String>();
输入final关键字。
答案 1 :(得分:1)
相反,从“使用”选项卡中获取字符串,您应该使用此...
holder.checkin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, holder.reference.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
答案 2 :(得分:1)
尝试使用onItemClick侦听器
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
// your code here. . .
}
});
答案 3 :(得分:0)
感谢投票人员。我实际上能够执行以下操作以返回alertdialog中的所有值。
final HashMap<String, String> finalPlaceList = placeList;
holder.checkin.setTag(finalPlaceList);
holder.checkin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alert.showAlertDialog(activity, "Row Details", v.getTag().toString() ,false);
}
});