我有一个列表视图。这个列表视图的每一行都是以下布局。我怎么知道哪个 视图,单击了ImageView(buddy_row_image)或TextView(chat_msg_count)用户。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/cell"
>
<ImageView
android:id="@+id/buddy_row_image"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
<TextView
android:text="1"
android:textStyle="bold"
android:gravity="center_vertical|center_horizontal"
android:id="@+id/chat_msg_count"
android:background="@drawable/tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
答案 0 :(得分:2)
如果我听到你说对了,每行都有一个imageview和一个textview,你希望能够点击imageview或textview,然后看看textview或imageview在listview中包含哪个位置,这是怎么回事你这样做:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.your_layout_for_each_row, null);
}
TextView text = (TextView) v.findViewById(R.id.your_text);
ImageView img = (ImageView) v.findViewById(R.id.your_image);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("TAG", "position: " + position);
}
});
return v;
你将使用onclicklistener为ImageView做同样的事情。
答案 1 :(得分:1)
我同意Carnal。快速提示,因为您只使用imageview和textview,您可以使用SimpleAdapter让您的生活更轻松......
SimpleAdapter adapter = new SimpleAdapter(this, SomeHashMap, R.layout.list_row, new String[]{"img","text"}, new int[]{R.id.image,R.id.textviewid});
ListView list = (ListView) findViewById(R.id.listView1);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// capture int position and use that to determine which row was selected
... and so on
此外,我最终制作了一个附加了键值的散列图,例如
map.put("person","My Name");
然后使用像....一样点击时检查名称。
if (map.get(position).get("person").equals("My Name"))
//do something
如果这令人困惑,那么只需谷歌“android listview simpleadapter”,你应该找到更多深度文章/教程。
答案 2 :(得分:0)
您可以按照this
捕获onClickEvent在适配器中设置setOnClickListener。