从listview行检索值

时间:2014-01-24 03:54:04

标签: android listview android-lazyadapter

我正在使用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;
}

4 个答案:

答案 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);
            }
        });