1
我有一个包含项目的listview,每个项目都是一个带有editText和其他组件的linearLayout。当项目是一个复杂的布局时将事件添加到列表视图项目
现在,我想将一个事件关联到editText,特别是我需要知道它是否被用户修改。
我的想法是为listview创建一个customAdapter,然后在那里处理事件......是否继续进行正确的操作?
我有一个包含项目的listview,每个项目都是一个带有editText和其他组件的linearLayout。当项目是一个复杂的布局时将事件添加到列表视图项目
现在,我想将一个事件关联到editText,特别是我需要知道它是否被用户修改。
我的想法是为listview创建一个customAdapter,然后在那里处理事件......是否继续进行正确的操作?
是的,创建一个自定义适配器将是要走的路。
您可以在您的适配器的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;
}
}