getLayoutInflater в simpleCursorAdapter
Я застрял с созданием пользовательского адаптера. Я хочу setOnClickListener на кнопках внутри ListView и я нашел эту тему, которая выглядит нормально как setonclicklistener-на кнопку-внутри--ListView с но проблема в том, что я получаю недостижимую ошибку кода в строке getLayoutInflater.
вот мой код
public class MyCursorAdapter extends SimpleCursorAdapter{
private final Context ctx;
private Button tagButton = null;
public MyCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
ctx = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return super.getView(position, convertView, parent);
LayoutInflater li = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = li.inflate(R.layout.tags_list_element, null, true);
tagButton= (Button)rowView.findViewById(R.id.tag_title);
tagButton.setTag(position);
tagButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
}
});
return rowView;
}
}
оба метода не работают для меня
LayoutInflater inflater = context.getLayoutInflater();
и
LayoutInflater li = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2 ответов
попробуй:
View myView = LayoutInflater.from(ctx).inflate(R.layout.my_view, null);
более того, какое исключение вы получаете?
Edit: в вашем методе" getView "первая строка -" return.....- значит, остальная часть вашего метода никогда не будет выполнена.... ;)
С точки зрения производительности:
View myView = LayoutInflater.from(context).inflate(R.layout.my_view, parent, false);
правильно; но свое более эффективное для того чтобы хранить inflater в окончательном поле внутри переходники.
private final Context ctx;
private final LayoutInflater mInflater;
private Button tagButton = null;
public MyCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
ctx = context;
mInflater = LayoutInflater.from(ctx);
}
затем выполните операцию getView.
//....
final View v = mInflater.inflate(R.layout.list_item, parent, false);
//....
//stuff here
//
return v;
также убедитесь, что контекст-это ваш контекст деятельности, вы получите проблемы с тематикой, если используете неправильный контекст.
С уважением, Крис!--4-->