带有列表视图的Android自定义适配器 - 不会返回视图?

时间:2014-05-09 12:17:40

标签: android listview view

我在使用自定义适配器将视图返回到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并且它可以工作。我需要创建一个自定义适配器来处理图像数据。

非常感谢任何帮助。谢谢

4 个答案:

答案 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;
        }
}