Jav*_*ast 1 android android-listview
我得到了这个例外,Attempt to invoke virtual method 'android.view.LayoutInflater android.app.Activity.getLayoutInflater()' on a null object reference但我能找到原因.
在mainactivity中我创建了一个ListView元素,结构是:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/list"
/>
Run Code Online (Sandbox Code Playgroud)
我为listview创建了一个自定义Adapter类,
class ListItem
{
public String shortDescription;
public String type;
public String time;
public int imageId;
public ListItem(String sd, String type, String time, Integer imageId)
{
this.shortDescription = sd;
this.type = type;
this.time = time;
this.imageId = imageId;
}
}
public class CustomList extends ArrayAdapter<Object>{
private Activity context;
private ListItem listItem[];
public CustomList(Activity context, ListItem li[]){
super(context, R.layout.rowlayout, li);
this.listItem = li;
}
@Override
public View getView(int position, View view, ViewGroup parent)
{
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.rowlayout, null, true);
TextView sd = (TextView)rowView.findViewById(R.id.sd);
TextView type = (TextView)rowView.findViewById(R.id.type);
TextView days = (TextView)rowView.findViewById(R.id.days);
ImageView icon = (ImageView)rowView.findViewById(R.id.icon);
sd.setText(listItem[position].shortDescription);
type.setText(listItem[position].type);
days.setText(listItem[position].time);
icon.setImageResource(listItem[position].imageId);
return rowView;
}
Run Code Online (Sandbox Code Playgroud)
我在我的MainActivity类中调用它,
public class MainActivity extends ActionBarActivity {
ListView listView;
ListItem listItem[] = new ListItem[2];
Integer[] imageId = {R.drawable.ic_launcher};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listItem[0] = new ListItem("test", "test", "test", imageId[0]);
listItem[1] = new ListItem("test1", "test1", "test1", imageId[0]);
CustomList adapter = new CustomList(MainActivity.this, listItem);
listView = (ListView)findViewById(R.id.list);
listView.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
我在自定义Adapter类中得到异常,在LayoutInflater inflater = context.getLayoutInflater(); .但是变量上下文在构造函数调用本身中初始化.为什么会抛出异常?
context是null.忘了初始化.把它当成:
public CustomList(Activity context, ListItem li[]){
super(context, R.layout.rowlayout, li);
this.listItem = li;
this.context=context; //<< initialize here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7766 次 |
| 最近记录: |