首先:如果单个物品的高度大于窗户高度……它就像一个魅力并且正常工作.(A)
第二:如果单个项目的高度小于窗口高度…有时它显示项目(B),有时则不显示! (C).
第三:我正在使用SwipeRefreshLayout from支持库,当我尝试刷新ListvIEw时,如果我在ListvIEw中有一个项目…如果它的高度小于窗口高度,它不会显示该项目.(C)
我想不出来!!有谁能够帮我
我知道这个问题与SwipeRefreshLayout或ListvIEw的高度有关,因为当我将margintop设置为此视图(作为屏幕高度的一半)时,ListvIEw的工作原理是perefctly.
我的xml文件是:
<androID.support.v4.Widget.SwipeRefreshLayoutandroID:ID="@+ID/swipe_Container"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:layout_margintop="0dp"androID:background="#FFedf1f2"androID:paddingleft="8.5dp"androID:paddingRight="8.5dp"androID:paddingtop="0dp" ><ListVIEw androID:ID="@+ID/List" androID:layout_wIDth="match_parent" androID:layout_height="0dp" androID:layout_weight="1" androID:divIDer="@androID:color/transparent" androID:divIDerHeight="8.5dp" androID:scrollbars="none" ></ListVIEw>@H_404_26@
一切都像魅力一样,直到我在ListvIEw中显示至少多一个项目.但是当我在列表视图中显示一个项目时,我的列表视图没有显示任何内容:(
为什么?我的错在哪里?我哪里错了?
这是我的适配器的getVIEw()(扩展BaseAdapter – 我已经削减了一些代码行):
public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { Typeface MyriadRegular = Farsi.GetMyriadRegular(mActivity); Typeface MyriadBold = Farsi.GetMyriadBold(mActivity); Typeface Yagut = Farsi.GetYagut(mActivity); Typeface JalalBold = Farsi.GetJalalBold(mActivity); User_Session = new SessionManagement(mActivity); VIEw row = convertVIEw; VIEwHolder holder; mVIDeo = mData.get(position); //======================================================================== USER USERname = mVIDeo.get("USERname").toupperCase(); CHANNEL_name = mVIDeo.get("CHANNEL_name"); CHANNEL_ID = mVIDeo.get("CHANNEL_ID"); USER_ID = mVIDeo.get("USER_ID"); AVATAR = mVIDeo.get("AVATAR"); //======================================================================== VIDEO VIDEO_URL = mVIDeo.get("VIDEO_URL"); Title = mVIDeo.get("Title"); DESCRIPTION = mVIDeo.get("DESCRIPTION"); BIG_IMAGE = mVIDeo.get("BIG_IMAGE"); VIEW_CNT = mVIDeo.get("VIEW_CNT"); COMMENT_CNT = mVIDeo.get("COMMENT_CNT"); liKE_CNT = mVIDeo.get("liKE_CNT"); liKE_COUNT = Integer.parseInt(liKE_CNT); disliKE_CNT = mVIDeo.get("disliKE_CNT"); disliKE_COUNT = Integer.parseInt(disliKE_CNT); POST_DATE = mVIDeo.get("POST_DATE"); DURATION = mVIDeo.get("DURATION"); category_Title = mVIDeo.get("category_Title"); category_ID = mVIDeo.get("category_ID"); VIDEO_ID = mVIDeo.get("VIDEO_ID"); VIDEO_WEB = mVIDeo.get("VIDEO_WEB"); liKE_W_USER = mVIDeo.get("liKE_W_USER"); disliKE_W_USER = mVIDeo.get("disliKE_W_USER"); Follow_B_USER = mVIDeo.get("FolLOW_B_USER"); like_with_user = Boolean.parseBoolean(liKE_W_USER); dislike_with_user = Boolean.parseBoolean(disliKE_W_USER); FolLOW_BY_USER = Boolean.parseBoolean(Follow_B_USER); if(convertVIEw == null) { row = mInflater.inflate(R.layout.layout_List_row,parent,false); holder = new VIEwHolder(row); row.setTag(holder); }else{ row = convertVIEw; holder = (VIEwHolder) row.getTag(); } holder.user_Avatar.setTag(USER_ID); holder.user_name.setTag(USER_ID); holder.user_Avatar.setonClickListener(ChannelProfile); holder.user_name.setonClickListener(ChannelProfile); holder.vIDeo_Comment.setTag(position); holder.vIDeo_like.setTag(R.string.position,position); holder.vIDeo_like.setTag(R.string.VIDeo_ID,VIDEO_ID); holder.vIDeo_dislike.setTag(R.string.position,position); holder.vIDeo_dislike.setTag(R.string.VIDeo_ID,VIDEO_ID); holder.vIDeo_Edit.setTag(position); holder.vIDeo_Delete.setTag(position); holder.vIDeo_editText.setTypeface(JalalBold); holder.vIDeo_deleteText.setTypeface(JalalBold); if (!mNext.equals("NONE")){ if (position >= getCount() - 1){ if(mSwipe != null){ mSwipe.setRefreshing(true); } loadmore(); } } holder.vIDeo_Duration.setTypeface(MyriadBold); holder.vIDeo_Duration.setText(Farsi.Convert(DURATION)); holder.vIDeo_Title.setTypeface(Yagut); holder.vIDeo_Title.setText(Title); holder.user_name.setTypeface(MyriadRegular); holder.user_name.setText(CHANNEL_name); holder.vIDeo_Description.setTypeface(MyriadRegular); holder.vIDeo_Description.setText(DESCRIPTION); holder.vIDeo_Description.setClickable(true); holder.vIDeo_categoryTitle.setTypeface(JalalBold); holder.vIDeo_categoryTitle.setText(category_Title); holder.vIDeo_VIEwCount.setTypeface(JalalBold); holder.vIDeo_VIEwCount.setText(VIEW_CNT); holder.vIDeo_CommentCount.setTypeface(JalalBold); return row;}@H_404_26@Edite:这是我的vIEwHolder类:
静态类VIEwHolder {
TextVIEw vIDeo_Duration; TextVIEw vIDeo_Title; ExpandableTextVIEw vIDeo_Description; TextVIEw vIDeo_categoryTitle; TextVIEw vIDeo_VIEwCount; TextVIEw vIDeo_PostDate; TextVIEw vIDeo_likeCount; TextVIEw vIDeo_CommentCount; TextVIEw vIDeo_dislikeCount; TextVIEw vIDeo_editText; TextVIEw vIDeo_deleteText; ImageVIEw vIDeo_BigImage; button vIDeo_like; button vIDeo_dislike; button vIDeo_Comment; relativeLayout vIDeo_options; relativeLayout vIDeo_Edit; relativeLayout vIDeo_Delete; //================================= TextVIEw user_name; ImageVIEw user_Avatar; public VIEwHolder(VIEw vi) { vIDeo_Duration = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_Duration); vIDeo_Title = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_Title); vIDeo_Description = (ExpandableTextVIEw) vi.findVIEwByID(R.ID.vIDeo_Description); vIDeo_categoryTitle = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_category_Title); vIDeo_VIEwCount = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_VIEw_Count); vIDeo_PostDate = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_Post_Date); vIDeo_likeCount = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_like_cnt); vIDeo_CommentCount = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_Comment_cnt); vIDeo_dislikeCount = (TextVIEw) vi.findVIEwByID(R.ID.vIDeo_dislike_cnt); vIDeo_editText = (TextVIEw) vi.findVIEwByID(R.ID.edit_text); vIDeo_deleteText = (TextVIEw) vi.findVIEwByID(R.ID.delete_text); vIDeo_BigImage = (ImageVIEw) vi.findVIEwByID(R.ID.vIDeo_Image); vIDeo_like = (button) vi.findVIEwByID(R.ID.vIDeo_like); vIDeo_dislike = (button) vi.findVIEwByID(R.ID.vIDeo_dislike); vIDeo_Comment = (button) vi.findVIEwByID(R.ID.vIDeo_Comment); vIDeo_options = (relativeLayout) vi.findVIEwByID(R.ID.vIDeoOptions); vIDeo_Edit = (relativeLayout) vi.findVIEwByID(R.ID.vIDeoEditBtn); vIDeo_Delete = (relativeLayout) vi.findVIEwByID(R.ID.vIDeoDeleteBtn); user_name = (TextVIEw) vi.findVIEwByID(R.ID.username); user_Avatar = (ImageVIEw) vi.findVIEwByID(R.ID.user_avatar); }}@H_404_26@JsON解析部分(我正在使用ION库进行异步网络):
private voID initSearch(String tag,boolean refresh){ final boolean Refornormal = refresh; URL = Constants.Search_URL+tag; if(User_Session.isLoggedIn()){ URL = Constants.Search_URL+tag+"&token="+User_TOKEN; } System.out.println("URL: "+URL); if (VIDeoload != null && !VIDeoload.isDone() && !VIDeoload.isCancelled()) return; VIDeoload = Ion.with(this).load(URL).asJsonObject().setCallback(new FutureCallback<JsonObject>() { @OverrIDe public voID onCompleted(Exception e,JsonObject result) { if (Refornormal == true){ mAdapter.clearData(); } if ( e == null){ System.out.println("RESulT: "+result); VIDeos = result.getAsJsonArray("objects"); if(VIDeos.size() > 0){ for (int i = 0; i < VIDeos.size(); i++) { JsonObject Item = VIDeos.get(i).getAsJsonObject(); //======================================================================== USER USERname = Item.get("username").getAsstring(); CHANNEL_name = Item.get("channel_name").getAsstring(); CHANNEL_ID = Item.get("channel_ID").getAsstring(); USER_ID = Item.get("user_ID").getAsstring(); AVATAR = Item.get("avatar").getAsstring(); //======================================================================== VIDEO VIDEO_URL = Item.get("vIDeo_url").getAsstring(); Title = Item.get("Title").getAsstring(); DESCRIPTION = Item.get("text").getAsstring(); BIG_IMAGE = Item.get("image").getAsstring(); VIEW_CNT = Item.get("cnt_vIEw").getAsstring(); COMMENT_CNT = Item.get("cnt_comment").getAsstring(); liKE_CNT = Item.get("cnt_like").getAsstring(); disliKE_CNT = Item.get("cnt_dislike").getAsstring(); POST_DATE = Item.get("create_time").getAsstring(); DURATION = Item.get("duration").getAsstring(); category_Title = Item.get("category_Title").getAsstring(); category_ID = Item.get("category_ID").toString(); VIDEO_ID = Item.get("ID").getAsstring(); VIDEO_WEB = Item.get("web_url").getAsstring(); liKE_W_USER = Item.get("like_with_user").getAsstring(); disliKE_W_USER = Item.get("dislike_with_user").getAsstring(); Follow_B_USER = Item.get("follow_by_user").getAsstring(); HashMap<String,String> Items = new HashMap<String,String>(); Items.put("USERname",USERname); Items.put("CHANNEL_name",CHANNEL_name); Items.put("CHANNEL_ID",CHANNEL_ID); Items.put("USER_ID",USER_ID); Items.put("AVATAR",AVATAR); Items.put("VIDEO_URL",VIDEO_URL); Items.put("Title",Title); Items.put("DESCRIPTION",DESCRIPTION); Items.put("BIG_IMAGE",BIG_IMAGE); Items.put("VIEW_CNT",VIEW_CNT); Items.put("COMMENT_CNT",COMMENT_CNT); Items.put("liKE_CNT",liKE_CNT); Items.put("disliKE_CNT",disliKE_CNT); Items.put("POST_DATE",POST_DATE); Items.put("DURATION",DURATION); Items.put("category_Title",category_Title); Items.put("category_ID",category_ID); Items.put("VIDEO_ID",VIDEO_ID); Items.put("VIDEO_WEB",VIDEO_WEB); Items.put("liKE_W_USER",liKE_W_USER); Items.put("disliKE_W_USER",disliKE_W_USER); Items.put("Follow_B_USER",Follow_B_USER); DATA.add(Items); } Page = result.getAsJsonObject("Meta"); if(User_Session.isLoggedIn()){ HashMap<String,String> user = User_Session.GetUserDetails(); String User_TOKEN = user.get(SessionManagement.KEY_USERTOKEN); if(Page.equals("")){ NextPage = "NONE"; }else{ NextPage = Page.get("next").getAsstring()+"&token="+User_TOKEN; } }else{ if(Page.equals("")){ NextPage = "NONE"; }else{ NextPage = Page.get("next").getAsstring(); } } mAdapter = new MyCustomAdapter(SearchActivity.this,DATA,NextPage,ParsvIDswipeLayout,false,""); List.setAdapter(mAdapter); mAdapter.notifyDataSetChanged(); new Handler().postDelayed(new Runnable() { @OverrIDe public voID run() { ParsvIDswipeLayout.setRefreshing(false); } },500); }else{ new Handler().postDelayed(new Runnable() { @OverrIDe public voID run() { ParsvIDswipeLayout.setRefreshing(false); } },500); } } } });}@H_404_26@解决方法 问题在于您每次都在创建新适配器而不是向适配器添加数据mAdapter = new MyCustomAdapter(SearchActivity.this,""); List.setAdapter(mAdapter); mAdapter.notifyDataSetChanged();@H_404_26@只需使用适配器中的方法addAll()添加数据即可.在每次数据加载时都不需要一次又一次地更换适配器.
我在你的代码中发现了这个问题.
总结以上是内存溢出为你收集整理的android – SwipeRefreshLayout中的Listview – 当自定义适配器只显示一行时,不会显示任何内容全部内容,希望文章能够帮你解决android – SwipeRefreshLayout中的Listview – 当自定义适配器只显示一行时,不会显示任何内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)