Java CustomListview中的空指针原因

Java CustomListview中的空指针原因,java,android,Java,Android,我正在开发一个应用程序,其中我实现了CustomListview,其中有一个图标,raitingbar和复选框。现在一切都显示良好,但当我插入一个按钮时,它会给我带来空指针错误。我知道空指针错误会导致在不初始化控件的情况下。。。但是到目前为止我已经试过了,不明白这里的问题是什么 我已为声明所有行项目保留了一个viewHold package com.AppFavorits; import android.view.View; import android.widget.Button; impo

我正在开发一个应用程序,其中我实现了
CustomListview
,其中有一个图标,raitingbar和复选框。现在一切都显示良好,但当我插入一个按钮时,它会给我带来空指针错误。我知道空指针错误会导致在不初始化控件的情况下。。。但是到目前为止我已经试过了,不明白这里的问题是什么

我已为声明所有行项目保留了一个viewHold

package com.AppFavorits;

import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

class ViewHolder {

    public ImageView imgvFavrowiconappicon;
    public TextView txvxFavrowiconappname;
    public RatingBar ratingBar1;
    public CheckBox chkbxFavrowsel;
    public Button btnFavrowOpen;




  ViewHolder(View base) {
    this.ratingBar1=(RatingBar)base.findViewById(R.id.ratingBar1);
    this.ratingBar1.setFocusable(false);
    this.txvxFavrowiconappname=(TextView)base.findViewById(R.id.txvxFavrowiconappname);
    this.imgvFavrowiconappicon=(ImageView)base.findViewById(R.id.imgvFavrowiconappicon);
    this.chkbxFavrowsel = (CheckBox)base.findViewById(R.id.chkbxFavrowsel);
    this.btnFavrowOpen= (Button)base.findViewWithTag(R.id.btnFavrowOpen); 
    this.chkbxFavrowsel.setFocusable(false);

  }
}
CustomAdapter

class RatingAdapter extends ArrayAdapter<RowModel> implements OnClickListener {
        private ArrayList<Model> mlist;
        boolean[] checkBoxState;

        RatingAdapter(ArrayList<RowModel> list, ArrayList<Model> mlist) {
            super(Favorites.this, R.layout.rowfavorites,
                    R.id.txvxFavrowiconappname, list);
            checkBoxState = new boolean[list.size()];
            this.mlist = mlist;
        }

        public View getView(final int position, View convertView,
                ViewGroup parent) {
            View row = super.getView(position, convertView, parent);

            holder = (ViewHolder) row.getTag();
            if (convertView == null) {
                holder = new ViewHolder(row);
                row.setTag(holder);


            } else {
                row = convertView;
                ((ViewHolder) row.getTag()).chkbxFavrowsel.setTag(mlist
                        .get(position));
            }

            RatingBar.OnRatingBarChangeListener l = new RatingBar.OnRatingBarChangeListener() {
                public void onRatingChanged(RatingBar ratingBar, float rating,
                        boolean fromTouch) {
                    Integer myPosition = (Integer) ratingBar.getTag();
                    RowModel model = getModel(myPosition);
                    model.rating = rating;
                    flFavRate[position] = rating;
                    // stored listitem rating in array
                    datasource.open();
                    datasource.UpdateRating(String.valueOf(rating), String.valueOf(position+1));
                    datasource.close();


                }
            };
            holder.ratingBar1.setOnRatingBarChangeListener(l);


             holder.chkbxFavrowsel
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                boolean isChecked) {
                            Model element = (Model) holder.chkbxFavrowsel
                                    .getTag();
                            element.setSelected(buttonView.isChecked());
                            bSelected[position] = isChecked;
                            element.setsizeInc(sizeincrement);
                            // if (holder.chkbxFavrowsel.isChecked() ==
                            // isChecked) {
                            boolean bAlreadyfav = false;
                            String prefixlink = "https://play.google.com/store/apps/details?id=";
                            ShrdDatasource.open();
                            ArrayList<Comment> alDSPackagenm = ShrdDatasource.getAllPackage();
                            ArrayList<Comment> alDSRating = ShrdDatasource.getAllRating();
                            ArrayList<Comment> alDSID = ShrdDatasource.getID();
                            Log.i(TAG, "First Package cmp"+  alDSPackagenm);
                            ShrdDatasource.close();
                            int i = 0 ;
                            if (alDSPackagenm != null) {
                                for (i = 0; i < alDSPackagenm.size(); i++) {
                                    if(alDSPackagenm.get(i).toString().equalsIgnoreCase(prefixlink + alPackagenm.get(position).toString() + "1x2optrue") || alDSPackagenm.get(i).toString().equalsIgnoreCase(prefixlink + alPackagenm.get(position).toString() + "1x2opfalse"))
                                    {
                                        bAlreadyfav = true;
                                        break;
                                    }
                                }

                            }
                            GolbPosition = position;
                            if (bAlreadyfav == true) {
                                Log.i(TAG, "Share positionis "+i);
                                Log.i(TAG, "Current positionis "+position);
                                Log.i(TAG,"ShrdDatasource Rating" + alDSRating.get(i).toString());
                                Log.i(TAG,"Favorite Rating" + String.valueOf(flFavRate[GolbPosition]));


                                if(alDSRating.get(i).toString().equalsIgnoreCase(String.valueOf(flFavRate[GolbPosition])))
                                {
                                    Toast.makeText(getBaseContext(), " App already in Share list ",
                                        Toast.LENGTH_LONG).show();
                                }
                                else
                                {
                                    //alid
                                    /*GolbPosition = position;
                                    new GETFavTask().execute();*/

                                    //UpdateRating
                                    ShrdDatasource.open();
                                    ShrdDatasource.UpdateRating(String.valueOf(flFavRate[GolbPosition]), alDSID.get(i).toString());
                                    ShrdDatasource.close();


                                    //Update Query fire
                                }
                            } else {
                                //Log.i(TAG, "First Package cmp"+ alDSPackagenm.get(position).toString());
                                Log.i(TAG, "Second Package cmp"+  alPackagenm.get(position).toString());
                                GolbPosition = position;
                                new GETFavTask().execute();

                                // add item in Database when user get select
                            }

                        }
                    });
                RowModel model = getModel(position);
                ViewHolder holder = (ViewHolder) row.getTag();
                holder.ratingBar1.setTag(new Integer(position));
                //holder.btnFavrowOpen.setTag(mlist.get(position));
                holder.ratingBar1.setRating(model.rating);
                holder.imgvFavrowiconappicon.setImageDrawable(drblAlIcon[position]);
                holder.txvxFavrowiconappname.setText(alAppName.get(position)
                    .toString());
                holder.chkbxFavrowsel.setChecked(mlist.get(position).isSelected());
                holder.chkbxFavrowsel.setTag(mlist.get(position));

                holder.btnFavrowOpen.setOnClickListener(new View.OnClickListener() {
                     public void onClick(View v) {
                        // OpenApp(alPackagenm.get(position).toString());
                     }
                 });
                try
                {
                if (alAppRating.get(position) == null | alAppRating.get(position).toString().equalsIgnoreCase("null")) {
                        holder.ratingBar1.setRating(0.0f);
                } else {
                    holder.ratingBar1.setRating(Float.parseFloat(alAppRating
                            .get(position).toString()));
                }
                }catch (Exception e) {
                    e.printStackTrace();
                }
                //holder.ratingBar1.setRating(Float.parseFloat(alAppRating.get(position).toString()));






            return (row);
        }
class RatingAdapter扩展ArrayAdapter实现OnClickListener{
私有数组列表;
布尔[]checkBoxState;
比率适配器(ArrayList列表,ArrayList mlist){
超级(收藏夹.this,R.layout.rowfavorites,
R.id.txvxFavrowiconappname,列表);
checkBoxState=new boolean[list.size()];
this.mlist=mlist;
}
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
视图行=super.getView(位置、转换视图、父级);
holder=(ViewHolder)row.getTag();
if(convertView==null){
支架=新的视图支架(行);
row.setTag(支架);
}否则{
行=转换视图;
((ViewHolder)row.getTag()).chkbxFavrowsel.setTag(mlist
.获得(职位);
}
RatingBar.OnRatingBarChangeListener l=新的RatingBar.OnRatingBarChangeListener(){
公共无效评级已更改(评级杆、浮动评级、,
布尔值(fromTouch){
整数myPosition=(整数)ratingBar.getTag();
RowModel model=getModel(myPosition);
model.rating=额定值;
flFavRate[位置]=额定值;
//数组中存储的listitem分级
datasource.open();
datasource.updateing(String.valueOf(rating),String.valueOf(position+1));
datasource.close();
}
};
支架.额定杆1.设置额定杆变更监听器(l);
holder.chkbxFavrowsel
.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,
布尔值(已检查){
模型元素=(模型)holder.chkbxFavrowsel
.getTag();
element.setSelected(buttonView.isChecked());
bSelected[位置]=已检查;
元件。设置尺寸(尺寸增加);
//if(holder.chkbxFavrowsel.isChecked()==
//(已检查){
布尔bAlreadyfav=false;
字符串前缀链接=”https://play.google.com/store/apps/details?id=";
shrdatasource.open();
ArrayList-alDSPackagenm=shrdataSource.getAllPackage();
ArrayList-alDSRating=shrdataSource.getAllRating();
ArrayList alDSID=shrdatasource.getID();
Log.i(标签“第一包cmp”+alDSPackagenm);
shrdatasource.close();
int i=0;
如果(alDSPackagenm!=null){
对于(i=0;ibase.findViewById
base.findViewWithTag