我在使用自定义适配器将视图返回到listview时遇到问题。 这就是我在扩展ListActivity的主类中所拥有的。
lv = getListView();
ListAdapater itemAdapter = new ItemAdapter(MainActivity.this,itemList)
lv.setAdapter(itemAdapter);
这就是我对名为ItemAdapter的自定义适配器所拥有的内容:
public class ItemAdapter extends BaseAdapter {
private static LayoutInflater inflater;
private Context context;
private ArrayList<HashMap<String,String>> newsItem;
public ItemAdapter(Context a, ArrayList<HashMap<String, String>> item){
super();
this.context = a;
this.newsItem = item;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
View vi = view;
if(view==null){
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.news_item_layout,parent,false );
}
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView date = (TextView)vi.findViewById(R.id.date); // date
HashMap<String,String> nItem = newsItem.get(position);
title.setText(nItem.get(MainActivity.TITLE));
date.setText(nItem.get(MainActivity.DATE));
//UrlImageViewHelper.setUrlDrawable(thumb_image, nItem.get(MainActivity.IMAGE));
return vi;
}
我不确定为什么这个适配器根本不会返回任何视图?我已经尝试使用具有相同数据的SimpleAdapter并且它可以工作。我需要创建一个自定义适配器来处理图像数据。
非常感谢任何帮助。谢谢
答案 0 :(得分:2)
根据计数,只有您的观点会添加到您的列表视图中,因此请将getCount()
方法更改为
@Override
public int getCount() {
return newsItem.size();
}
并改变
if(view==null)
到
if(vi==null)
我希望这会对你有所帮助。
答案 1 :(得分:1)
在适配器中,您返回0值。
@Override
public int getCount() {
return 0;
}
将其更改为
@Override
public int getCount() {
return item.size();
}
并在getView方法中更改
if(view==null)
to
if(vi==null)
答案 2 :(得分:0)
@Override
public int getCount() {
return newsItem.size();
}
@Override
public Object getItem(int i) {
return newsItem.get(i);
}
@Override
public long getItemId(int i) {
return newsItem.get(i).hashCode();
}
和
if(vi==null)
答案 3 :(得分:0)
// try this way,hope this will help you...
public class ItemAdapter extends BaseAdapter {
private Context context;
private ArrayList<HashMap<String, String>> newsItem;
public ItemAdapter(Context a, ArrayList<HashMap<String, String>> item) {
super();
this.context = a;
this.newsItem = item;
}
@Override
public int getCount() {
return newsItem.size();
}
@Override
public Object getItem(int i) {
return newsItem.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = LayoutInflater.from(context).inflate(R.layout.news_item_layout,null,false);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.date = (TextView) convertView.findViewById(R.id.date);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
holder.title.setText(newsItem.get(position).get(MainActivity.TITLE));
holder.date.setText(newsItem.get(position).get(MainActivity.DATE));
//UrlImageViewHelper.setUrlDrawable(thumb_image, nItem.get(MainActivity.IMAGE));
return view;
}
class ViewHolder{
TextView title;
TextView date;
}
}