Android如何从自定义视图onclicklisner调用onitemclicklisner?
我为listview及其word fine定制了一个适配器。但是,当我将onclicklistener设置为自定义适配器行视图中的视图时,OnItemClickListener无法工作Android如何从自定义视图onclicklisner调用onitemclicklisner?,android,listview,custom-adapter,Android,Listview,Custom Adapter,我为listview及其word fine定制了一个适配器。但是,当我将onclicklistener设置为自定义适配器行视图中的视图时,OnItemClickListener无法工作 public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; try{ if(convertView==null) { c
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
try{
if(convertView==null)
{
convertView=mInflater.inflate(R.layout.marker_row_view, null);
holder=new ViewHolder();
holder.Name=(TextView)convertView.findViewById(R.id.ProeprtyName);
holder.image=(ImageView)convertView.findViewById(R.id.RightArrow);
convertView.setTag(holder);
}
else
{
holder=(ViewHolder)convertView.getTag();
}
holder.Name.setText(propertyNames[position]);
if(selectedPosition == position){
Log.d("", "selected");
convertView.setBackgroundColor(Color.BLUE);
convertView.setBackgroundColor(Color.parseColor("#3B79FF"));
holder.Name.setTextColor(Color.WHITE);
}else{
//convertView.setBackgroundResource(R.drawable.savsearch_bg_district);
holder.Name.setTextColor(Color.BLACK);
}
holder.Name.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("fdsf", "on");
Globalclass global = (Globalclass) ((Activity)context).getApplication();
global.setMarkerTextClick(true);
}
});
holder.image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("fdsf", "on");
Globalclass global = (Globalclass) ((Activity)context).getApplication();
global.setMarkerTextClick(false);
}
});
}catch (Exception e) {
e.printStackTrace();
}
return convertView;
}
listview的代码是
final MarkerInfoAdapter adapter = new MarkerInfoAdapter(PropertyMapList.this, names);
final ListView list = (ListView) CustomMarker.findViewById(R.id.listView1);
list.setAdapter(adapter);list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(
AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Log.d("", "fsdfdsfds");
((MarkerInfoAdapter)adapter).setSelected(arg2);
}
});
final MarkerInfoAdapter=新的MarkerInfoAdapter(PropertyMapList.this,name);
最终ListView列表=(ListView)CustomMarker.findViewById(R.id.listView1);
list.setAdapter(适配器);list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共空间(
AdapterView arg0,视图arg1,
整数arg2,长arg3){
Log.d(“,”fsdfdsfds“);
((MarkerInfoAdapter)适配器).setSelected(arg2);
}
});
由于您要在onClick listener中添加相同的代码,因此在行视图中使用单击式listener没有任何意义。相反,您可以在onItemClick中添加以下代码
Globalclass global = (Globalclass) ((Activity)context).getApplication();
global.setMarkerTextClick(false);
如果仍要在单击特定视图时实现,请确保
- 视图不可单击
- android:focusable=“false”
- android:focusableInTouchMode=“false”
android:clickable="true"
android:descendantFocusability="beforeDescendants"
此链接将解决您的问题您可以尝试以下方法:
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setSelected(position);
}
});
尝试CustomMarker.list.setOnItemClickListener……哪些是您试图实现的视图
onClicklistener()
??我想知道单击了哪个视图(文本或图像),如果文本意味着我将调用某个函数,而图像意味着调用另一个函数。。我可以得到视图点击,所以我为每个视图实现了这个onclicklisner现在正在工作,但是不能得到listview的onitemclickLisner??Onclick of textview我希望itemclicklistener运行,Onclick of the rightArrow(图像)我需要为marker类做一些逻辑工作。。。