【发布时间】:2015-09-10 06:11:39
【问题描述】:
我有一个 ListView,其中有一个 TextView 和 ImageView。我只希望我的 ImageView 有一个点击监听器。我该如何实现?
【问题讨论】:
-
至少你应该向我们展示一些代码,到目前为止你已经尝试过什么。这个问题没有直接的答案。
-
请贴出ListView的代码
我有一个 ListView,其中有一个 TextView 和 ImageView。我只希望我的 ImageView 有一个点击监听器。我该如何实现?
【问题讨论】:
您必须使用自定义视图来自定义您的适配器。
CustomAdapter.java
public class CustomAdapter extends BaseAdapter{
String [] result;
Context context;
int [] imageId;
private static LayoutInflater inflater=null;
public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, int[] prgmImages) {
// TODO Auto-generated constructor stub
result=prgmNameList;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder
{
TextView tv;
ImageView img;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Holder holder=new Holder();
View rowView;
rowView = inflater.inflate(R.layout.custom_list, null);
holder.tv=(TextView) rowView.findViewById(R.id.textView1);
holder.img=(ImageView)rowView.findViewById(R.id.imageView1);
holder.tv.setText(result[position]);
holder.img.setImageResource(imageId[position]);
holder.img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show();
}
});
return rowView;
}
}
custom_list.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageView1"
android:layout_gravity="center"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="TextView" />
【讨论】:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater li = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(resource, parent, false);
holder.imageview= (ImageView)convertView.findViewById(R.id.imageview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// handle click
}
});
return convertView;
}
static class ViewHolder {
ImageView imageview;
}
【讨论】:
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODo
}
});
【讨论】:
您可以在自定义适配器中为图像视图放置一个 OnClickListener。
示例:
viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Your code
}
});
【讨论】:
ListView 有很多问题。您可以使用 RecyclerView android l 功能。
【讨论】: