Android 自定义适配器未填充GridView

Android 自定义适配器未填充GridView,android,gridview,android-adapter,custom-adapter,android-recyclerview,Android,Gridview,Android Adapter,Custom Adapter,Android Recyclerview,我制作了一个自定义适配器来填充我的gridView。我正在做的是,我试图用两种不同的数据(也是自定义的)填充gridview,这两种数据是:Movies和FavoriteItemOvies。当使用电影更新dridview时,它会很好地更新,但当它喜欢项目视频时,它不会更新。我将FavoriteMovies存储在sqlite数据库中,然后查询它以返回一个游标。数据完全返回,没有错误。主要问题是我的电影适配器。在这里面,当我将电影添加到适配器时,它会添加到MoviesAdapter中的列表中,并且工

我制作了一个自定义适配器来填充我的gridView。我正在做的是,我试图用两种不同的数据(也是自定义的)填充gridview,这两种数据是:Movies和FavoriteItemOvies。当使用电影更新dridview时,它会很好地更新,但当它喜欢项目视频时,它不会更新。我将FavoriteMovies存储在sqlite数据库中,然后查询它以返回一个游标。数据完全返回,没有错误。主要问题是我的电影适配器。在这里面,当我将电影添加到适配器时,它会添加到MoviesAdapter中的列表中,并且工作正常,但是当我将FavoriteMovies添加到适配器时,它不会将其添加到MoviesAdapter中的FavoriteList中,并且它的大小始终为零。 请帮忙!! 这是我的电影适配器: 包com.akshitjain.popularmovies

import android.content.Context;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;


public class MoviesAdapter extends BaseAdapter {


private Context mContext;
List<Movies> list = new ArrayList<>();
List<FavouriteMovies> favouriteList = new ArrayList<>();

public MoviesAdapter(Context c) {
    this.mContext = c;
}

@Override
public int getCount() {
    if (list != null)
        return list.size();
    else
        return favouriteList.size();
}

@Override
public Object getItem(int position) {
    if (list != null)
        return list.get(position);
    else
        return favouriteList.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView =     LayoutInflater.from(mContext).inflate(R.layout.grid_item_movies, parent, false);
    }

    ImageView moviePoster = (ImageView) convertView.findViewById(R.id.grid_item_movie_image);
    if (list != null) {
        Movies movies = list.get(position);
        String posterPath = movies.posterPath;
        final String POSTER_FINAL_URL = Constants.IMAGE_BASE_URL +     Constants.POSTER_SIZE_LARGE + posterPath;

            Picasso.with(mContext).load(POSTER_FINAL_URL.trim()).into(moviePoster);
    } else {
        FavouriteMovies favouriteMovies = favouriteList.get(position);
        byte[] bb = favouriteMovies.posterImage;
        moviePoster.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0,       bb.length));
    }

    return convertView;
}

public void add(Movies movies) {
    list.add(movies);
}

public void offlineAdd(FavouriteMovies favouriteMovies) {
    favouriteList.add(favouriteMovies);
}

public void clear() {
    list.clear();
}

}

非常抱歉我的粗俗语言。

如果你设置你最喜欢的电影,你将永远拥有
count==0

List<Movies> list = new ArrayList<>();

@Override
public int getCount() {
    if (list != null)
        return list.size();
    else
        return favouriteList.size();
}
List List=new ArrayList();
@凌驾
public int getCount(){
如果(列表!=null)
返回list.size();
其他的
返回FavoriteList.size();
}
这将始终返回计数
0
,因为列表从不为
null
。你最喜欢的电影会被忽略

解决
  • 由于您只显示电影或收藏夹,因此应使用2个适配器。如果你不想这样做
  • 使用
    布尔值
    。只需将
    showFavorites
    设置为true,然后显示它们。或者如果你保留空支票
  • 设置
    List=null当显示favorited时,它也会工作

使用以下适配器:-

boolean[] CheckedItem_Adap;
ImageLoader imgload;
int headercount = 0, childCount;
LinkedList<HashMap<String, String>> allData;
LinkedList<HashMap<String, String>> temp_Header;
LinkedList<HashMap<String, String>> temp_child = new LinkedList<HashMap<String, String>>();
ArrayList<String> header;
ArrayList<String> childCount1;
private int[] mSectionIndices;
private String[] mSectionLetters;
private LayoutInflater inflater;
private Activity context;

public Adapter_UserTimeLine_StickyGrid(Activity context1, LinkedList<HashMap<String, String>> list, boolean[] checkedItems, ArrayList<String> childCountArray, ArrayList<String> headerarray, LinkedList<HashMap<String, String>> temp_Headers_LinkList) {

    this.CheckedItem_Adap = checkedItems;
    allData = list;
    inflater = LayoutInflater.from(context1);
    imgload = new ImageLoader(context1);
    childCount1 = childCountArray;
    header = headerarray;
    temp_Header = temp_Headers_LinkList;
    context = context1;
}

@Override
public int getCount() {
    return allData.size();
}

@Override
public Object getItem(int position) {
    return allData.get(position);
}

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

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder = new ViewHolder();
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.sticky_listitems, parent, false);
    }


    holder.ivPostPic_Sticky = (ImageView) convertView.findViewById(R.id.ivPostPic_Sticky);
    holder.ivSelectedToDelete_Sticky = (ImageView) convertView.findViewById(R.id.ivSelectedToDelete_Sticky);
    holder.rlPostSticky_ManageSticky = (RelativeLayout) convertView.findViewById(R.id.rlPostSticky_ManageSticky);

    if (CheckedItem_Adap[position] == true) {
        holder.ivSelectedToDelete_Sticky.setVisibility(View.VISIBLE);
    } else if (CheckedItem_Adap[position] == false) {
        holder.ivSelectedToDelete_Sticky.setVisibility(View.GONE);
    }

    if (allData.get(position).get("media_type").equals("text")) {
        holder.ivPostPic_Sticky.setImageResource(R.drawable.line_small);
    } else {
        imgload.DisplayImage(Constants.Imge_baseUrl + allData.get(position).get("video_thumb"),
        holder.ivPostPic_Sticky);
    }


    holder.rlPostSticky_ManageSticky.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (UserTimeLine_Activity.isDeleteSelected) {
                if (CheckedItem_Adap[position] == false) {
                    UserTimeLine_Activity.Selected_PostIds.add(allData.get(position).get("post_id"));
                    holder.ivSelectedToDelete_Sticky.setVisibility(View.VISIBLE);
                    CheckedItem_Adap[position] = true;
                } else {
                    UserTimeLine_Activity.Selected_PostIds.remove(allData.get(position).get("post_id"));
                    holder.ivSelectedToDelete_Sticky.setVisibility(View.GONE);
                    CheckedItem_Adap[position] = false;
                }

                for (int i = 0; i < UserTimeLine_Activity.Selected_PostIds.size(); i++) {
                    Log.e("postid", i + "-" + UserTimeLine_Activity.Selected_PostIds.get(i) + "");

                }
                if (UserTimeLine_Activity.Selected_PostIds.get(0).equals(UserTimeLine_Activity.Selected_PostIds.get(0))) { }
            } else {
                String media_type = allData.get(position).get("media_type");
                String post_id = allData.get(position).get("post_id");
                Intent in = new Intent(context, PostDetails_UserOwn_TimeLIne_Activity.class);
                in.putExtra("media_type", media_type);
                in.putExtra("post_id", post_id);
                in.putExtra("position", String.valueOf(position));
                in.putExtra("post_User_Name", allData.get(position).get("post_User_Name"));
                context.startActivity(in);
            }
        }
    });

    return convertView;
}

@Override
public int getCountForHeader(int i) {
    int c = Integer.valueOf(childCount1.get(i));
    return c;
}

@Override
public int getNumHeaders() {
    return temp_Header.size();
}

@Override
public View getHeaderView(int position, View convertView, ViewGroup parent) {
    HeaderViewHolder holder = new HeaderViewHolder();
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.headersticky_managepost, parent, false);
    }

    temp_Header.get(position).get("post_datetime");

    TextView tvDate_Sticky = (TextView) convertView.findViewById(R.id.tvDate_Sticky);
    for (int i = 0; i < temp_Header.size(); i++) {
    }

    String Date = temp_Header.get(position).get("post_datetime");
    String FormatedDate = parseDateToddMMyyyy(Date);
    tvDate_Sticky.setText(FormatedDate);
    return convertView;
}

public String parseDateToddMMyyyy(String time) {
    String inputPattern = "yyyy-MM-dd";
    String outputPattern = "MMM-dd-yyyy";
    SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern);
    SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);

    Date date = null;
    String str = null;

    try {
        date = inputFormat.parse(time);
        str = outputFormat.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return str;
}

class HeaderViewHolder {
    TextView tvDate_Sticky;
}

class ViewHolder {
    ImageView ivPostPic_Sticky, ivSelectedToDelete_Sticky;
    RelativeLayout rlPostSticky_ManageSticky;
}
}
boolean[]CheckedItem\u Adap;
图像加载器imgload;
int headercount=0,childCount;
LinkedList allData;
LinkedList临时标题;
LinkedList temp_child=新建LinkedList();
数组列表头;
ArrayList childCount1;
私有int[]msactionindex;
私有字符串[]个字母;
私人充气机;
私人活动语境;
公共适配器\u用户时间线\u粘贴网格(活动上下文1、链接列表、布尔[]校验项、ArrayList childCountArray、ArrayList headerarray、链接列表临时标题\u链接列表){
this.CheckedItem_Adap=checkedItems;
所有数据=列表;
充气机=从(上下文1)开始的充气机;
imgload=新图像加载器(context1);
childCount1=childCountArray;
收割台=收割台阵列;
临时标题=临时标题链接列表;
上下文=上下文1;
}
@凌驾
public int getCount(){
返回allData.size();
}
@凌驾
公共对象getItem(int位置){
返回所有数据。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终视图持有者=新的视图持有者();
if(convertView==null){
convertView=充气机。充气(R.layout.sticky\u列表项,父项,false);
}
holder.ivpostic_Sticky=(ImageView)convertView.findViewById(R.id.ivpostic_Sticky);
holder.ivSelectedToDelete\u Sticky=(ImageView)convertView.findViewById(R.id.ivSelectedToDelete\u Sticky);
holder.rlpoststick\u ManageSticky=(RelativeLayout)convertView.findViewById(R.id.rlpoststick\u ManageSticky);
if(CheckedItem_Adap[position]==true){
holder.ivSelectedToDelete\u Sticky.setVisibility(View.VISIBLE);
}else if(CheckedItem_Adap[position]==false){
holder.ivSelectedToDelete\u Sticky.setVisibility(View.GONE);
}
if(allData.get(position.get(“媒体类型”).equals(“文本”)){
holder.ivpostic_Sticky.setImageResource(R.drawable.line_small);
}否则{
imgload.DisplayImage(Constants.Imge\u baseUrl+allData.get(position.get(“video\u thumb”),
支架(IVPOSTIC_粘性);
}
holder.rlPostSticky\u ManageSticky.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
if(UserTimeLine_Activity.isDeleteSelected){
if(CheckedItem_Adap[position]==false){
UserTimeLine_Activity.Selected_PostIds.add(allData.get(position.get(“post_id”));
holder.ivSelectedToDelete\u Sticky.setVisibility(View.VISIBLE);
CheckedItem_Adap[位置]=真;
}否则{
UserTimeLine_Activity.Selected_PostIds.remove(allData.get(position.get(“post_id”));
holder.ivSelectedToDelete\u Sticky.setVisibility(View.GONE);
CheckedItem_Adap[position]=false;
}
对于(int i=0;iboolean[] CheckedItem_Adap;
ImageLoader imgload;
int headercount = 0, childCount;
LinkedList<HashMap<String, String>> allData;
LinkedList<HashMap<String, String>> temp_Header;
LinkedList<HashMap<String, String>> temp_child = new LinkedList<HashMap<String, String>>();
ArrayList<String> header;
ArrayList<String> childCount1;
private int[] mSectionIndices;
private String[] mSectionLetters;
private LayoutInflater inflater;
private Activity context;

public Adapter_UserTimeLine_StickyGrid(Activity context1, LinkedList<HashMap<String, String>> list, boolean[] checkedItems, ArrayList<String> childCountArray, ArrayList<String> headerarray, LinkedList<HashMap<String, String>> temp_Headers_LinkList) {

    this.CheckedItem_Adap = checkedItems;
    allData = list;
    inflater = LayoutInflater.from(context1);
    imgload = new ImageLoader(context1);
    childCount1 = childCountArray;
    header = headerarray;
    temp_Header = temp_Headers_LinkList;
    context = context1;
}

@Override
public int getCount() {
    return allData.size();
}

@Override
public Object getItem(int position) {
    return allData.get(position);
}

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

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder = new ViewHolder();
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.sticky_listitems, parent, false);
    }


    holder.ivPostPic_Sticky = (ImageView) convertView.findViewById(R.id.ivPostPic_Sticky);
    holder.ivSelectedToDelete_Sticky = (ImageView) convertView.findViewById(R.id.ivSelectedToDelete_Sticky);
    holder.rlPostSticky_ManageSticky = (RelativeLayout) convertView.findViewById(R.id.rlPostSticky_ManageSticky);

    if (CheckedItem_Adap[position] == true) {
        holder.ivSelectedToDelete_Sticky.setVisibility(View.VISIBLE);
    } else if (CheckedItem_Adap[position] == false) {
        holder.ivSelectedToDelete_Sticky.setVisibility(View.GONE);
    }

    if (allData.get(position).get("media_type").equals("text")) {
        holder.ivPostPic_Sticky.setImageResource(R.drawable.line_small);
    } else {
        imgload.DisplayImage(Constants.Imge_baseUrl + allData.get(position).get("video_thumb"),
        holder.ivPostPic_Sticky);
    }


    holder.rlPostSticky_ManageSticky.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (UserTimeLine_Activity.isDeleteSelected) {
                if (CheckedItem_Adap[position] == false) {
                    UserTimeLine_Activity.Selected_PostIds.add(allData.get(position).get("post_id"));
                    holder.ivSelectedToDelete_Sticky.setVisibility(View.VISIBLE);
                    CheckedItem_Adap[position] = true;
                } else {
                    UserTimeLine_Activity.Selected_PostIds.remove(allData.get(position).get("post_id"));
                    holder.ivSelectedToDelete_Sticky.setVisibility(View.GONE);
                    CheckedItem_Adap[position] = false;
                }

                for (int i = 0; i < UserTimeLine_Activity.Selected_PostIds.size(); i++) {
                    Log.e("postid", i + "-" + UserTimeLine_Activity.Selected_PostIds.get(i) + "");

                }
                if (UserTimeLine_Activity.Selected_PostIds.get(0).equals(UserTimeLine_Activity.Selected_PostIds.get(0))) { }
            } else {
                String media_type = allData.get(position).get("media_type");
                String post_id = allData.get(position).get("post_id");
                Intent in = new Intent(context, PostDetails_UserOwn_TimeLIne_Activity.class);
                in.putExtra("media_type", media_type);
                in.putExtra("post_id", post_id);
                in.putExtra("position", String.valueOf(position));
                in.putExtra("post_User_Name", allData.get(position).get("post_User_Name"));
                context.startActivity(in);
            }
        }
    });

    return convertView;
}

@Override
public int getCountForHeader(int i) {
    int c = Integer.valueOf(childCount1.get(i));
    return c;
}

@Override
public int getNumHeaders() {
    return temp_Header.size();
}

@Override
public View getHeaderView(int position, View convertView, ViewGroup parent) {
    HeaderViewHolder holder = new HeaderViewHolder();
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.headersticky_managepost, parent, false);
    }

    temp_Header.get(position).get("post_datetime");

    TextView tvDate_Sticky = (TextView) convertView.findViewById(R.id.tvDate_Sticky);
    for (int i = 0; i < temp_Header.size(); i++) {
    }

    String Date = temp_Header.get(position).get("post_datetime");
    String FormatedDate = parseDateToddMMyyyy(Date);
    tvDate_Sticky.setText(FormatedDate);
    return convertView;
}

public String parseDateToddMMyyyy(String time) {
    String inputPattern = "yyyy-MM-dd";
    String outputPattern = "MMM-dd-yyyy";
    SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern);
    SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);

    Date date = null;
    String str = null;

    try {
        date = inputFormat.parse(time);
        str = outputFormat.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return str;
}

class HeaderViewHolder {
    TextView tvDate_Sticky;
}

class ViewHolder {
    ImageView ivPostPic_Sticky, ivSelectedToDelete_Sticky;
    RelativeLayout rlPostSticky_ManageSticky;
}
}