0

我正在使用 LazyAdaptor 创建一个列表视图,其中包含一些我从 Web 服务器解析的数据。每一行都有一个 ImageView,它的作用就像一个按钮,当单击 ImageView 时,我正在尝试执行的操作将在名为“reference”的行中检索一个值。我试图将它作为一种快速方法来确保我获取正确的参考 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;
}
4

4 回答 4

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关键字。

于 2014-01-24T04:36:42.337 回答
1

尝试使用 onItemClick 监听器

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {

// your code here. . . 
  }

            });
于 2014-01-24T05:22:00.260 回答
1

而是使用选项卡从您的视图中获取字符串,您应该使用它...

holder.checkin.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
            Toast.makeText(activity, holder.reference.getText().toString(), Toast.LENGTH_SHORT).show();
        }
    });
于 2014-01-24T04:42:16.447 回答
0

感谢您的输入。我实际上能够执行以下操作来返回警报对话框中的所有值。

 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);
            }
        });
于 2014-01-24T05:19:42.233 回答