baseadapter怎么用 android.view.inflatgetbaseexceptionn:binary xml file line 11:e

android基础(5)
今天在做用gridview显示手机中图片时,抛出了这样一个错误,第一次遇到,记录一下。
和原来一样,为gridview设置的适配器继承的是BaseAdapter,然后重写四个方法,问题出在getView(int position, View convertView, ViewGroup parent)这个方法。
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(SelectPicActivity.this, R.layout.image_grid, parent);
View view = View.inflate(SelectPicActivity.this, R.layout.image_grid, parent);在inflate()这个方法中将第三个参数改为null就不会报上面的错误了。
那么什么时候用parent,什么时候是null?
& & & 据我所知,适配器继承ArrayAdapter和BaseAdapter,SimpleAdapter该参数应传入null,否则就会报上面的异常。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8289次
排名:千里之外
原创:23篇
(1)(1)(2)(2)(1)(1)(3)(2)(2)(3)(2)(1)(2)(2)(1)问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
先贴出错误
android.view.InflateException: Binary XML file line #32: Error inflating class TextView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.jack.jianyu.ui.adapter.ChatMessageAdapter.getView(ChatMessageAdapter.java:67)
然后这个是ChatMessageAdapter
public class ChatMessageAdapter extends BaseAdapter {
private Context mContext =
private List&ChatMessageBean& messageBeans =
private LayoutInflater mInflater =
public ChatMessageAdapter(Context context, List&ChatMessageBean& mDataList) {
this.mContext =
this.messageBeans = mDataL
mInflater = LayoutInflater.from(context);
public int getViewTypeCount() {
public int getItemViewType(int position) {
ChatMessageBean chatMessageBean = messageBeans.get(position);
if (chatMessageBean.getType() == ChatMessageBean.Type.RECEIVEMSG) {
public int getCount() {
return messageBeans.size();
public Object getItem(int position) {
return messageBeans.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
ChatMessageBean chatMessageBean = messageBeans.get(position);
ViewHolder viewHolder =
if (convertView == null) {
if (getItemViewType(position) == 0) {
convertView = mInflater.inflate(R.layout.item_chat_receivemsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_from_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_from_content);
convertView = mInflater.inflate(R.layout.item_chat_sendmsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_to_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_to_content);
convertView.setTag(viewHolder);
viewHolder = (ViewHolder) convertView.getTag();
// 设置数据
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
viewHolder.mDate.setText(df.format(chatMessageBean.getDate()));
viewHolder.mMsg.setText(chatMessageBean.getMsg());
return convertV
public final class ViewHolder {
TextView mD
TextView mM
XCRoundImageView mI
简单的说就是个双布局,一个聊天界面R.layout.item_chat_receivemsg
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:orientation="vertical"
android:padding="8dp"&
android:id="@+id/tv_from_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:text="12:12:12"
android:textColor="@color/textInfo"
android:textSize="10sp" /&
&LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:orientation="horizontal"&
&com.jack.jianyu.widget.XCRoundImageView
android:id="@+id/image_from_tuling"
style="@style/user_face_image"
android:contentDescription="@null" /&
android:id="@+id/tv_from_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:background="@drawable/chat_recevie_bg_selector"
android:clickable="true"
android:gravity="center_vertical"
android:textSize="15sp" /&
&/LinearLayout&
&/LinearLayout&
R.layout.item_chat_sendmsg
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:gravity="right"
android:orientation="vertical"
android:padding="8dp"&
android:id="@+id/tv_to_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:text="12:12:12"
android:textColor="@color/textInfo"
android:textSize="10sp" /&
&LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:orientation="horizontal"&
android:id="@+id/tv_to_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:background="@drawable/chat_send_bg_selector"
android:clickable="true"
android:gravity="center_vertical"
android:textSize="15sp" /&
&com.jack.jianyu.widget.XCRoundImageView
android:id="@+id/image_to_tuling"
style="@style/user_face_image"
android:contentDescription="@null" /&
&/LinearLayout&
&/LinearLayout&
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这是在解析XML出现了问题,建议Rebuild一下刷新XML布局文件,另外检查一下布局文件中的XCRoundImageView内是否存在问题。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的代码我认真看了一下,发现很可能是这个原因导致的错误。我先来说说你代码的意图,看看对不对:
你是想在聊天界面显示自己接受到的信息和自己发送的信息,但是这些信息的排列是没有规律的。
你的思路使用两个ViewHolder来分别保存接受到的信息和自己发送的信息对应布局文件中的内容,这个想法是没错的。来看看你的这段代码
if (convertView == null) {
if (getItemViewType(position) == 0) {
convertView = mInflater.inflate(R.layout.item_chat_receivemsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_from_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_from_content);
convertView = mInflater.inflate(R.layout.item_chat_sendmsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView
.findViewById(R.id.tv_to_time);
viewHolder.mMsg = (TextView) convertView
.findViewById(R.id.tv_to_content);
convertView.setTag(viewHolder);
很明显,你的代码只会保存一个ViewHolder,而且一般情况下保存的是接受信息的ViewHolder,因为if (convertView == null)里面的代码语句在一开始时只会执行一次。
给你一个解决方案的思路:
用两个convertView和ViewHolder保存分别保存接受到的信息和自己发送的信息
在ChatMessageBean里面添加一个判断是发送信息还是接受信息的字段
在getView中根据ChatMessageBean chatMessageBean = messageBeans.get(position);中的新增的字段判断是发送信息还是接受信息,然后对对应的ViewHolder进行处理并返回对应的convertView
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 inflateexception 的文章

 

随机推荐