Android 自定义适配器未填充GridView
我制作了一个自定义适配器来填充我的gridView。我正在做的是,我试图用两种不同的数据(也是自定义的)填充gridview,这两种数据是:Movies和FavoriteItemOvies。当使用电影更新dridview时,它会很好地更新,但当它喜欢项目视频时,它不会更新。我将FavoriteMovies存储在sqlite数据库中,然后查询它以返回一个游标。数据完全返回,没有错误。主要问题是我的电影适配器。在这里面,当我将电影添加到适配器时,它会添加到MoviesAdapter中的列表中,并且工作正常,但是当我将FavoriteMovies添加到适配器时,它不会将其添加到MoviesAdapter中的FavoriteList中,并且它的大小始终为零。 请帮忙!! 这是我的电影适配器: 包com.akshitjain.popularmoviesAndroid 自定义适配器未填充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中的列表中,并且工
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个适配器。如果你不想这样做
- 使用
。只需将布尔值
设置为true,然后显示它们。或者如果你保留空支票showFavorites
- 设置
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;
}
}