textview-当设置 setText 时 Custom listview 出错

问题描述

当设置 setText 时 Custom listview 出错
我创建了一个Custom listview,有一个image text 和 checkbox ,当我想设置一个值时,却获得一个NUll Pointer Exception异常。如果我不设置一个值如何获得默认的list?

class PInfo {    String appname = """";    String pname = """";    String versionName = """";    int versionCode = 0;    int icon; } public class InstalledApps extends Activity{    private static LayoutInflater inflater=null;private ListView listview;private Activity activity;List<PInfo> installedApps = new ArrayList<PInfo>();@Overrideprotected void onCreate(Bundle savedInstanceState) {    // TODO Auto-generated method stub    super.onCreate(savedInstanceState);    setContentView(R.layout.applist);    activity = this;    listview = (ListView)findViewById(R.id.listView1);    PackageManager pm = getPackageManager();    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);    for(ApplicationInfo app : packages) {        PInfo newInfo = new PInfo();            newInfo.appname = (String) app.loadLabel(pm);            newInfo.pname = app.packageName;        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1){                         installedApps.add(newInfo);        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {            installedApps.add(newInfo);        } else {            installedApps.add(newInfo);         }    }    InstalledAppsAdapter iap = new InstalledAppsAdapter(this installedApps);listview.setAdapter(iap);}}class InstalledAppsAdapter extends BaseAdapter{private Activity activity;private static LayoutInflater inflater=null;List<PInfo> installedApps = new ArrayList<PInfo>();ListView listview; public InstalledAppsAdapter(Activity a List<PInfo> b) {   // TODO Auto-generated constructor stub    installedApps = b;    activity = a;    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    listview = (ListView)activity.findViewById(R.id.listView1);}@Overridepublic int getCount() {    // TODO Auto-generated method stub    return installedApps.size();}@Overridepublic Object getItem(int arg0) {    // TODO Auto-generated method stub    return arg0;}@Overridepublic long getItemId(int arg0) {    // TODO Auto-generated method stub    return arg0;}@Overridepublic View getView(int arg0 View arg1 ViewGroup arg2) {    // TODO Auto-generated method stub    View customView = arg1;    ViewHolder holder;    if(arg1 == null){        customView = inflater.inflate(R.layout.listrow null);    holder = new ViewHolder();    holder.iv = (ImageView)customView.findViewById(R.id.imageView1);    holder.tv = (TextView) customView.findViewById(R.id.textView2);    holder.cb = (CheckBox)customView.findViewById(R.id.checkBox1);    }else{        holder = (ViewHolder)customView.getTag();    }    PInfo pinfo = installedApps.get(arg0);    holder.tv.setText(""""+pinfo.appname);    return customView;}static class ViewHolder{    ImageView iv;    CheckBox cb;    TextView tv;}

看起来像findViewById(R.id.textView1)返回null。什么问题呢?

解决方案

好像是一般下面这么写吧,你的有点怪,而且你也少了convertView.setTag(holder);这个动作

 public View getView(int position View convertView ViewGroup parent) {            System.out.println(""getView "" + position + "" "" + convertView);            ViewHolder holder = null;            if (convertView == null) {                convertView = mInflater.inflate(R.layout.item1 null);                holder = new ViewHolder();                holder.textView = (TextView)convertView.findViewById(R.id.text);                convertView.setTag(holder);            } else {                holder = (ViewHolder)convertView.getTag();            }            holder.textView.setText(mData.get(position));            return convertView;        }
时间: 2024-08-04 01:31:38

textview-当设置 setText 时 Custom listview 出错的相关文章

安卓-设置numberPiscker时出错。

问题描述 设置numberPiscker时出错. 报错日志:java.lang.IndexOutOfBoundsException: setSpan (2 ... 2) ends beyond length 0 at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1016) at android.text.SpannableStringBuilder.setSpan(SpannableStri

settext-在onActivityResult后设置setText失败

问题描述 在onActivityResult后设置setText失败 我使用 ViewPager+Tabhost 框架. 我在A activity传递 startActivityForResult(B activity,100), 在 B 中传递setResult(200, data); 在A activity中能从B 中获取值:String b = data.getStringExtra("b"); 使用Log也可以看见值. 但是在 A 中使用tv.setText(b); 不能设置值

Android实现在TextView文字过长时省略部分或滚动显示的方法_Android

本文实例讲述了Android实现在TextView文字过长时省略部分或滚动显示的方法.分享给大家供大家参考,具体如下: TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下: 1.android:ellipsize="start"-–省略号显示在开头 2.android:ellipsize="end"--省略号显示在结尾 3.android:ellipsize="middle"--省略号显示在中间 4.an

MFC读txt数据时,数据出错

问题描述 MFC读txt数据时,数据出错 我用mfc写了一个程序用于读取数据进行一元线性回归计算,读进来的数据总会莫名其妙的出问题,比如数据是12.34,读进来就会变成12.33999999999999999或者12.340000000000001,求各路大神帮忙看看是什么回事 解决方案 你有考虑过精度问题吗? 解决方案二: 浮点数在计算机中无法精确存储,只是无限接近这个数而已比如你存储12.34也只是存储一个无限接近12.34的值(比如12.339999....)所以我们比较浮点数的时候会设置

c语言-运行exe文件时fseek函数出错

问题描述 运行exe文件时fseek函数出错 我用fopen函数打开一个bmp文件,然后用fseek函数设置指针位置,程序在vs中调试完全没有问题,但运行exe文件时就出错.不知什么原因,求大神帮助! 解决方案 文件夹和文件名尽量不要用中文 解决方案二: stream 无效,是不是打开文件失败了,你没有判断文件打开是否成功!

slidingmenu-SlidingMenu中的TextView不能设置点击事件,也不能set新的值

问题描述 SlidingMenu中的TextView不能设置点击事件,也不能set新的值 在SlidingMenu的布局中设置了几个TextView,但是要在程序中设置点击事件或者动态set新的值进去都不行 解决方案 private void initSlidingMenu() { LayoutInflater inflater = getLayoutInflater().from(this); View view = inflater.inflate(R.layout.sliding_menu

android:TextView简单设置文本样式和超链接的方法_Android

本文实例讲述了android:TextView简单设置文本样式和超链接的方法.分享给大家供大家参考,具体如下: 设置TextView中文本的样式(如:颜色.斜体等),可以针对不同位置的文本设置不同的样式(如:将索引范围在1-3的字符设置为黑色,2-6的字符设置为粗体等) myFirstTextView = (TextView)findViewById(R.id.myFirstTextView); myFirstTextView.setText("这是我的第一个TextView,嘿嘿"

spanner-Spannable设置span时,若string中有多个字段需要设置span该如何做?

问题描述 Spannable设置span时,若string中有多个字段需要设置span该如何做? 比如我想为:"Hello,I am Tom."中为Hello设置高亮. 那么就需要添加span.就是将"Hello"的start和end作为参数放入setSpan()方法. 倘若我之后还想再将"am"也和设置为和"Hello"一样的高亮效果且"Hello"高亮效果保持不变,该如何做? 有没有什么span方法是我

android:TextView简单设置文本样式和超链接的方法

本文实例讲述了android:TextView简单设置文本样式和超链接的方法.分享给大家供大家参考,具体如下: 设置TextView中文本的样式(如:颜色.斜体等),可以针对不同位置的文本设置不同的样式(如:将索引范围在1-3的字符设置为黑色,2-6的字符设置为粗体等) myFirstTextView = (TextView)findViewById(R.id.myFirstTextView); myFirstTextView.setText("这是我的第一个TextView,嘿嘿"