2014-01-24 67 views
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; 
} 
+1

ü需要設置的點擊偵聽器時convertView爲空 –

+0

可以seTag的價值和使用getTag。做同樣的事情你做位置 – Raghunandan

回答

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

,而不是從您的視圖使用標籤,你應該使用這個字符串得到...

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

    @Override 
    public void onClick(View v) { 
      Toast.makeText(activity, holder.reference.getText().toString(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
1

嘗試使用onItemClick聽衆

listView.setOnItemClickListener(new OnItemClickListener() { 

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

// your code here. . . 
    } 

      });