android badgeview listview,收到ListView的BaseAdapter数据后,getView返回null

我真的需要一些帮助,因为我不是't know why the Viewholder is returning null... I'使用 baseAdapter , asynctask 来检索数据,但 Listview 正在崩溃 .

public class UserGameView extends AppCompatActivity{

public UserGameView() {super();}

private static final String USER_ID = "...";

private ListView listview ;

UserBadgesAdapter listAdapter;

BadgeItemsListLoader badgeItems;

ArrayList list = new ArrayList<>();

protected View mView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// define the view

int layout = R.layout.fragment_game; //it says fragment but corresponds to view

// define the view

setContentView(layout);

overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

//ListView

listview = (ListView) findViewById(R.id.badges);

listview.setEmptyView(findViewById(R.id.empty_list_item));

listAdapter = new UserBadgesAdapter(this, list);

listview.setAdapter(listAdapter);

badgeItems = new BadgeItemsListLoader();

badgeItems.execute(USER_ID);

}

public class BadgeItemsListLoader extends AsyncTask> {

@Override

protected ArrayList doInBackground(String... params) {

try {

return new GameService().getUserBadges(params[0]).execute().body();

}

catch (Exception ex){

ex.printStackTrace();

return null;

}

}

@Override

protected void onPreExecute() {

super.onPreExecute();

}

@Override

protected void onPostExecute(final ArrayList userBadges) {

super.onPostExecute(userBadges);

Log.v(TAG, "Items on post.." + userBadges.toString());

for (UserBadges userBadge : userBadges) {

Log.v(TAG, "The badge name is..." + userBadge.getBadge_name());

Log.v(TAG, "The badge image is..." + userBadge.getBadge_name());

}

list = userBadges;

listAdapter = new UserBadgesAdapter(UserGameView.this,list);

listview.setAdapter(listAdapter);

listAdapter.notifyDataSetChanged();

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

Log.v(TAG, "This is the " + userBadges.get(position).getBadge_name() + " Badge");

//Toast.makeText(getApplicationContext(), userBadgesList.get(position).getBadgeName(), Toast.LENGTH_LONG).show();

}

});

}

}

static class ViewHolder extends RecyclerView.ViewHolder {

TextView badge_name;

ImageView badge_image;

public ViewHolder(View item) {

super(item);

badge_name=(TextView) item.findViewById(R.id.badge_text);

badge_image=(ImageView) item.findViewById(R.id.badge_image);

}

public TextView getBadge_name() {

return badge_name;

}

public void setBadge_name(TextView badge_name) {

this.badge_name = badge_name;

}

public ImageView getBadge_image() {

return badge_image;

}

public void setBadge_image(ImageView badge_image) {

this.badge_image = badge_image;

}

}

public class UserBadgesAdapter extends BaseAdapter {

Context mContext;

List bList = new ArrayList<>();

private ViewHolder holder;

public UserBadgesAdapter(Context context, ArrayList arrayList){

mContext = context;

bList = arrayList;

}

@Override

public int getCount() {

return bList.size();

}

@Override

public UserBadges getItem(int position) {

return bList.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

View itemView = convertView;

// create a ViewHolder reference

ViewHolder holder;

Log.v(TAG, " True getting a view");

if(convertView == null){

LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

if (inflater != null) {

convertView = inflater.inflate(R.layout.list_badges, parent, false);

}

holder = new ViewHolder();

holder.badge_text = (TextView)itemView.findViewById(R.id.badge_text);

holder.badge_image = (ImageView)itemView.findViewById(R.id.badge_image);

itemView.setTag(holder);

} else {

// the getTag returns the viewHolder object set as a tag to the view

holder = (ViewHolder) itemView.getTag();

}

UserBadges currentBadge = bList.get(position);

byte[] bmp = currentBadge.getBadge_image_str().getBytes();

Bitmap badge_image = BitmapFactory.decodeByteArray(bmp, 0, bmp.length);

//here comes the null error

holder.badge_image.setImageBitmap(badge_image);

holder.badge_text.setText(currentBadge.getBadge_name());

return convertView;

}

public class ViewHolder{

TextView badge_text;

ImageView badge_image;

public TextView getBadge_text() {

return badge_text;

}

public void setBadge_text(TextView badge_text) {

this.badge_text = badge_text;

}

public ImageView getBadge_image() {

return badge_image;

}

public void setBadge_image(ImageView badge_image) {

this.badge_image = badge_image;

}

}

}

}

错误是......

06-18 12:43:34.719 13310-13310 / com.polimi.mep.crowd E / AndroidRuntime:FATAL EXCEPTION:main进程:com.polimi.mep.crowd,PID:13310 java.lang.NullPointerException:尝试调用在com.polimi.mep.crowd.gamification.views.UserGameView $ UserBadgesAdapter.getView(UserGameView.java:729)上的空对象引用上的虚方法'android.view.View android.view.View.findViewById(int)'

我一直在寻找任何指导的年龄我会非常感激 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值