当前位置: 代码迷 >> Android >> Context空对象引用有关问题
  详细解决方案

Context空对象引用有关问题

热度:93   发布时间:2016-04-27 22:24:10.0
Context空对象引用问题
package com.dye.addshopcart;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


@SuppressLint("InflateParams")
public class ShoppingCartAdapter extends BaseAdapter{
private LayoutInflater inflater = null;
 private List<String> listItems; 
private Context context;
private ImageView buyImg;// 这是在界面上跑的小图片

public ShoppingCartAdapter(Context context) {
 this.inflater = LayoutInflater.from(context); 
        listItems = getData();
}

private List<String> getData() {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 5; i++) {
list.add("这是一个商品" + i);
}
return list;
}

@Override
public int getCount() {

return listItems.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
String name = listItems.get(position);
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.product_item, null);
holder = new ViewHolder();
holder.nameTxt = (TextView) convertView.findViewById(R.id.name);
holder.buyBtn = (Button) convertView.findViewById(R.id.btn_addcar);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.nameTxt.setText(name);
//购买按钮的点击事件监听
holder.buyBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int[] start_location = new int[2];// 一个整型数组,用来存储按钮的在屏幕的X、Y坐标
v.getLocationInWindow(start_location);// 这是获取购买按钮的在屏幕的X、Y坐标(这也是动画开始的坐标)
buyImg = new ImageView(context);// buyImg是动画的图片
buyImg.setImageResource(R.drawable.sign);// 设置buyImg的图片
new MainActivity().setAnim(buyImg, start_location);// 开始执行动画
}
});
return convertView;
}

class ViewHolder {
TextView nameTxt;
Button buyBtn;
}
}


------解决思路----------------------
引用:
Quote: 引用:

最好把Activity的代码也发一下,主要是setAnim这个方法
在楼下

构造方法改一下,context没有初始化,改成如下代码:

public ShoppingCartAdapter(Context context) {
        this.context = context;
        this.inflater = LayoutInflater.from(context);
        listItems = getData();
    }

button事件中
new MainActivity().setAnim(buyImg, start_location);// 开始执行动画
改成
((MainActivity)context).setAnim(buyImg, start_location);// 开始执行动画
  相关解决方案