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