2013-05-07 53 views

回答

0

是的,创建一个自定义适配器将是要走的路。

您可以在您的适配器的getView()内部处理事件,然后使用它来相应地响应事件。

这里是从这个惊人tutorial一个示例代码:

public class MyListAdapter extends ArrayAdapter{ 

     private int resource; 
     private LayoutInflater inflater; 
     private Context context; 

     public MyListAdapter (Context ctx, int resourceId, Listobjects) { 

      super(ctx, resourceId, objects); 
      resource = resourceId; 
      inflater = LayoutInflater.from(ctx); 
     context=ctx; 
     } 

     @Override 
     public View getView (int position, View convertView, ViewGroup parent) { 

      /* create a new view of my layout and inflate it in the row */ 
      convertView = (RelativeLayout) inflater.inflate(resource, null); 

      /* Extract the city's object to show */ 
      City city = getItem(position); 

      /* Take the TextView from layout and set the city's name */ 
      TextView txtName = (TextView) convertView.findViewById(R.id.cityName); 
      txtName.setText(city.getName()); 

      /* Take the TextView from layout and set the city's wiki link */ 
      TextView txtWiki = (TextView) convertView.findViewById(R.id.cityLinkWiki); 
      txtWiki.setText(city.getUrlWiki()); 

      /* Take the ImageView from layout and set the city's image */ 
      ImageView imageCity = (ImageView) convertView.findViewById(R.id.ImageCity); 
      String uri = "drawable/" + city.getImage(); 
      int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName()); 
      Drawable image = context.getResources().getDrawable(imageResource); 
      imageCity.setImageDrawable(image); 
      return convertView; 
     } 
} 

Source for the whole code can be found here

相关问题