各位大哥大姐,帮小弟看一个小问题:
在getView()方法里初始化holder的时候convertView.findViewById(R.id.record_ico)这样取到的值都为null,不明白怎么回事?@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
holder = (ViewItemHolder) convertView.getTag();
} else {
convertView = inflater.inflate(R.layout.record_list, null);
holder = new ViewItemHolder();
holder.record_ico = (ImageView)convertView.findViewById(R.id.record_ico);
holder.record_number = (TextView)convertView.findViewById(R.id.record_number);
holder.record_time = (TextView)convertView.findViewById(R.id.record_time);
holder.record_delete = (ImageButton)convertView.findViewById(R.id.record_delete);
convertView.setTag(holder);
}
HashMap<String, Object> appInfo = appList.get(position);
if (appInfo != null) {
int recordIco =(Integer)appInfo.get("record_icon");
String telNumber = (String) appInfo.get("record_number");
String telTime = (String)appInfo.get("record_time");
int deleteIco = (Integer)appInfo.get("record_delete");
holder.record_ico.setImageDrawable(holder.record_ico.getResources().getDrawable( recordIco) );
holder.record_number.setText(telNumber);
holder.record_time.setText(telTime);
holder.record_delete.setImageDrawable(holder.record_delete.getResources().getDrawable(deleteIco));
holder.record_delete.setOnClickListener(new ListViewButtonListener(position));
}
return convertView;
}
然而初始化inflater的地方写在构造方法里的,感觉没问题呀public ButtonInListViewAdapter(Context c, ArrayList<HashMap<String, Object>> appList, int resource) {
this.appList = appList;
this.context = c;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
record_item.xml文件内容也贴出来了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants"
>
<ImageView
android:id="@+id/record_ico"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:gravity="right"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_weight="4"
>
<TextView
android:id="@+id/record_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
/>
<TextView
android:id="@+id/record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
/>
</LinearLayout>
<ImageButton
android:id="@+id/record_delete"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:src="@drawable/delete"
android:gravity="right"
android:layout_weight="1"
android:focusable="false"
/>
</LinearLayout>
在getView()方法里初始化holder的时候convertView.findViewById(R.id.record_ico)这样取到的值都为null,不明白怎么回事?@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
holder = (ViewItemHolder) convertView.getTag();
} else {
convertView = inflater.inflate(R.layout.record_list, null);
holder = new ViewItemHolder();
holder.record_ico = (ImageView)convertView.findViewById(R.id.record_ico);
holder.record_number = (TextView)convertView.findViewById(R.id.record_number);
holder.record_time = (TextView)convertView.findViewById(R.id.record_time);
holder.record_delete = (ImageButton)convertView.findViewById(R.id.record_delete);
convertView.setTag(holder);
}
HashMap<String, Object> appInfo = appList.get(position);
if (appInfo != null) {
int recordIco =(Integer)appInfo.get("record_icon");
String telNumber = (String) appInfo.get("record_number");
String telTime = (String)appInfo.get("record_time");
int deleteIco = (Integer)appInfo.get("record_delete");
holder.record_ico.setImageDrawable(holder.record_ico.getResources().getDrawable( recordIco) );
holder.record_number.setText(telNumber);
holder.record_time.setText(telTime);
holder.record_delete.setImageDrawable(holder.record_delete.getResources().getDrawable(deleteIco));
holder.record_delete.setOnClickListener(new ListViewButtonListener(position));
}
return convertView;
}
然而初始化inflater的地方写在构造方法里的,感觉没问题呀public ButtonInListViewAdapter(Context c, ArrayList<HashMap<String, Object>> appList, int resource) {
this.appList = appList;
this.context = c;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
record_item.xml文件内容也贴出来了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants"
>
<ImageView
android:id="@+id/record_ico"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:gravity="right"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_weight="4"
>
<TextView
android:id="@+id/record_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
/>
<TextView
android:id="@+id/record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
/>
</LinearLayout>
<ImageButton
android:id="@+id/record_delete"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:src="@drawable/delete"
android:gravity="right"
android:layout_weight="1"
android:focusable="false"
/>
</LinearLayout>
解决方案 »
- android 如何防止so被别用使用
- 使用commons-net-ftp-2.0.jar进行FTP远程下载时遇到的问题
- android源码下载repo问题
- 使用android模拟器,怎么老是显示android的启动画面,进不去?
- 请教关于intent.setclass
- 如何为Android的ImageView和GrilView设置透明背景色
- 我只想说三个字,去你的
- 我按google的教程做的项目怎么点了运行只见android字上光在移动不见helloworld几个字呢?
- android访问servlet时服务端会生成一个session对象吗?
- android 蓝牙BLE操作时,不同手机连接速度不一样,求大神帮忙解决一下。。。
- scrollview内使用HorizontalScrollView的问题
- android源码导入eclipse,framework层如果是通过实现aidl接口的函数无法实现单步调试
if (convertView != null) {
holder = (ViewItemHolder) convertView.getTag();
} else {
convertView = inflater.inflate(R.layout.record_item, null);
holder = new ViewItemHolder();
holder.record_ico = (ImageView)convertView.findViewById(R.id.record_ico);
holder.record_number = (TextView)convertView.findViewById(R.id.record_number);
holder.record_time = (TextView)convertView.findViewById(R.id.record_time);
holder.record_delete = (ImageButton)convertView.findViewById(R.id.record_delete);
convertView.setTag(holder);
}
HashMap<String, Object> appInfo = appList.get(position);
if (appInfo != null) {
int recordIco =(Integer)appInfo.get("record_icon");
String telNumber = (String) appInfo.get("record_number");
String telTime = (String)appInfo.get("record_time");
int deleteIco = (Integer)appInfo.get("record_delete");
holder.record_ico.setImageDrawable(holder.record_ico.getResources().getDrawable( recordIco) );
holder.record_number.setText(telNumber);
holder.record_time.setText(telTime);
holder.record_delete.setImageDrawable(holder.record_delete.getResources().getDrawable(deleteIco));
holder.record_delete.setOnClickListener(new ListViewButtonListener(position));
}
return convertView;
}