我在我的活动中使用Sectioned List
,ListActivity
但现在因为我需要将Actionbar
添加到此活动,所以我不能在这里使用ListActivity。
所以我试图使用ListView
。
但我没有得到如何将适配器设置为Listview
。
因为我需要设置用于SectionedListView的自定义适配器。
但是当我将它用于简单的ListView时,它会给出NullPointer
异常。
我浪费了足够的时间
请帮帮我。
这是ListView的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
and this is the adapter used for (ListActivity).
public class EntryAdapter extends ArrayAdapter<Item> {
private Context context;
private ArrayList<Item> items;
private LayoutInflater vi;
private ImageDownloader mImageDownloader;
public EntryAdapter(Context context,ArrayList<Item> items, ImageDownloader mImageDownloader) {
super(context,0, items);
this.context = context;
this.items = items;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mImageDownloader = mImageDownloader;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
Log.v("position in entry adapter", ""+position);
final Item i = items.get(position);
if (i != null) {
if(i.isSection()){
SectionItem si = (SectionItem)i;
v = vi.inflate(R.layout.list_item_section, null);
v.setOnClickListener(null);
v.setOnLongClickListener(null);
v.setLongClickable(false);
final TextView sectionView = (TextView) v.findViewById(R.id.list_item_section_text);
sectionView.setText(si.getTitle());
}else{
EntryItem ei = (EntryItem)i;
v = vi.inflate(R.layout.list_item_entry, null);
final TextView title = (TextView)v.findViewById(R.id.list_item_entry_title);
final TextView subtitle = (TextView)v.findViewById(R.id.list_item_entry_summary);
final ImageView cat_icon = (ImageView)v.findViewById(R.id.category_icon);
final ImageView channel_icon = (ImageView)v.findViewById(R.id.channel_icon);
if (title != null)
title.setText(ei.title);
if(subtitle != null)
subtitle.setText(ei.subtitle);
if(cat_icon != null)
{
if(ei.catIcon != null)
cat_icon.setImageBitmap(ei.catIcon);
else
cat_icon.setVisibility(View.INVISIBLE);
}
if(channel_icon !=null)
{
if(ei.url != null)
{
mImageDownloader.download(ei.url,channel_icon);
Log.v("url in adapter", ei.url);
}
else
channel_icon.setVisibility(View.INVISIBLE);
}
}
}
return v;
}
}
mList = (ListView) findViewById(R.id.list);
EntryAdapter adapter = new EntryAdapter(this, items, mImageDownloader);
mList.setAdapter(adapter);
mList.setOnItemClickListener(this);
由于 MAHAVEER。
答案 0 :(得分:4)
更改将ListActivity
扩展为Activity
的类,
1。)使用Activity而不是ListActivity扩展您的类
2.。)将xml中ListView的ID从
@android:id/list
更改为@+id/your_listview
3.)找到使用
在xml中声明的ListView实例
ListView your_listview = (ListView)findViewById(R.id.your_listview);
4.。)使用适配器, your_listview.setAdapter(适配器);
答案 1 :(得分:0)
试试这个,
1)将ListView的ID更改为android:id="@+id/list"
。
2)而不是扩展ListActivity扩展Activity。