我为listview编写了一个自定义适配器,但是当我尝试为列表项实现click事件时,我发现它没有响应,如果有人建议我解决方案,我会很高兴.
public class TourList extends ListActivity { .... setContentView(R.layout.tourlist); ..... getListView().setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent,View view,int position,long id) { //i couldn't reach here Log.v(TAG,"did u get me"); } }); adap = new MyAdapter(TourList.this,mylist); getListView().setAdapter(adap);
我的自定义适配器是
private class MyAdapter extends BaseAdapter { ArrayList<HashMap<String,String>> elements; Context ctx; public MyAdapter(Context context,ArrayList<HashMap<String,String>> mylist) { this.elements=mylist; this.ctx=context; } public boolean isEnabled(int position){ return true; } @Override public int getCount() { return elements.size(); } @Override public Object getItem(int position) { return elements.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position,View convertView,ViewGroup parent) { View v = convertView; if (convertView == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.rowfor_tourlist,null); } TextView in = (TextView)v.findViewById(R.id.intro); TextView du = (TextView)v.findViewById(R.id.duration); TextView pf = (TextView)v.findViewById(R.id.price); TextView pn = (TextView)v.findViewById(R.id.product); WebView wv=(WebView)v.findViewById(R.id.photo); in.setText(Html.fromHtml(mylist.get(position).get("Intro"))); du.setText(mylist.get(position).get("Duration")); pf.setText(mylist.get(position).get("Price")); pn.setText(mylist.get(position).get("Product")); wv.getSettings().setJavaScriptEnabled(true); wv.loadUrl(mylist.get(position).get("ImageURL")); return v; } }//class
和我的tourlist.xml文件看起来像
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" .... > <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/white" android:cacheColorHint="#00000000" android:layout_weight="1" /> </...>
解决方法
看看
this讨论是否有帮助……