
我在片段类中有一个ListvIEw,它从JSON获取数据.到目前为止,我能够在列表视图中显示数据. (这里的数据是新闻项目).我想在列表视图中点击特定新闻时显示新闻的详细页面.
例如:列表视图仅包含新闻的标题和图像.单击该列表视图时,它应显示该特定新闻片段的详细版本.我怎样才能做到这一点?
这是具有ListvIEw的片段类.
package com.fortuna.cinemalk;import java.util.ArrayList;import androID.app.Activity;import androID.app.FragmentManager;import androID.os.AsyncTask;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.support.v4.app.FragmentTransaction;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.vIEw.VIEwGroup;import androID.Widget.AdapterVIEw.OnItemClickListener;import androID.Widget.GrIDVIEw;import androID.Widget.ListVIEw;import androID.content.Intent;import androID.Widget.AdapterVIEw;import com.fortuna.cinemalk.adapter.LazyAdapter;import com.fortuna.cinemalk.model.BaseElement;import com.fortuna.cinemalk.service.CommonVariable;import com.fortuna.cinemalk.service.JsONServices;import com.fortuna.cinemalk.util.Element;public class NewsFramgment extends Fragment { private GrIDVIEw grIDVIEw; private ListVIEw ListVIEw; private ArrayList<BaseElement> News; private LazyAdapter adapter; private Activity activity; private CommonVariable commonVariable; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw vIEw = inflater.inflate(R.layout.news_fragment, container, false); activity = this.getActivity(); commonVariable = (CommonVariable) activity.getApplication(); //grIDVIEw = (GrIDVIEw) vIEw.findVIEwByID(R.ID.grIDVIEw2); ListVIEw = (ListVIEw) vIEw.findVIEwByID(R.ID.List); ListVIEw.setonItemClickListener(new OnItemClickListener() { public voID onItemClick(AdapterVIEw<?> parent, VIEw v, int position, long ID) { androID.support.v4.app.Fragment detail = new NewsDetailFragment(); androID.support.v4.app.FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().add(R.ID.content_frame, detail).addToBackStack("back").commit(); } }); new BackGround().execute(); return vIEw; }public class BackGround extends AsyncTask<VoID, VoID, VoID> { @OverrIDe protected VoID doInBackground(VoID... params) { News = JsONServices.getNewsDescription(); return null; } @OverrIDe /* check again */ protected voID onPostExecute(VoID result) { commonVariable.setNewsDescription(News); adapter = new LazyAdapter(News, activity,Element.NEWS_List.getType()); ListVIEw.setAdapter(adapter); super.onPostExecute(result); } @OverrIDe protected voID onPreExecute() { // Todo auto-generated method stub super.onPreExecute(); } }}在代码中,您会注意到单击某个项目时,它将移至NewsDetailFragment.这就是我想要编写的类.
PS:我的JsON已经包含了所有细节,包括标题,图片,描述……
UPDATE ::这是我的NewsDetailFragment类.它显示所有新闻,而不是我点击的那个.
package com.fortuna.cinemalk;import java.util.ArrayList;import androID.app.Activity;import androID.app.FragmentManager;import androID.os.AsyncTask;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.support.v4.app.FragmentTransaction;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.vIEw.VIEwGroup;import androID.Widget.AdapterVIEw.OnItemClickListener;import androID.Widget.GrIDVIEw;import androID.Widget.listadapter;import androID.content.Intent;import androID.Widget.AdapterVIEw;import com.fortuna.cinemalk.adapter.LazyAdapter;import com.fortuna.cinemalk.model.BaseElement;import com.fortuna.cinemalk.service.CommonVariable;import com.fortuna.cinemalk.service.JsONServices;import com.fortuna.cinemalk.util.Element;public class NewsDetailFragment extends Fragment { private GrIDVIEw grIDVIEw; private VIEw vIEw1; private ArrayList<BaseElement> newsdetail; private LazyAdapter adapter; private Activity activity; private CommonVariable commonVariable; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw vIEw = inflater.inflate(R.layout.newsdetail_fragment, container, false); activity = this.getActivity(); commonVariable = (CommonVariable) activity.getApplication(); vIEw1 = (VIEw) vIEw.findVIEwByID(R.ID.List); /*grIDVIEw.setonItemClickListener(new OnItemClickListener() { public voID onItemClick(AdapterVIEw<?> parent, VIEw v, int position, long ID) { androID.support.v4.app.Fragment detail = new TheaterDetailFragment(); androID.support.v4.app.FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().add(R.ID.content_frame, detail).addToBackStack("back").commit(); } }); */ new BackGround().execute(); return vIEw; }public class BackGround extends AsyncTask<VoID, VoID, VoID> { @OverrIDe protected VoID doInBackground(VoID... params) { newsdetail = JsONServices.getNewsDescription(); return null; } @OverrIDe /* check again */ protected voID onPostExecute(VoID result) { commonVariable.setTheater(newsdetail); adapter = new LazyAdapter(newsdetail, activity,Element.NEWS_DETAIL.getType()); ((AdapterVIEw<listadapter>) vIEw1).setAdapter(adapter); super.onPostExecute(result); } @OverrIDe protected voID onPreExecute() { // Todo auto-generated method stub super.onPreExecute(); } }}解决方法:
你可以使用以下
FragmentTransaction fragmentTransaction = getSupportFragmentManager() .beginTransaction();Fragment profileFragment = new MovIEDetailFragment();//the fragment you want to showprofileFragment.setArguments(bundle);fragmentTransaction .replace(R.ID.content_frame, profileFragment);//R.ID.content_frame is the layout you want to replacefragmentTransaction.addToBackStack(null);fragmentTransaction.commit();编辑
FragmentTransaction用于执行添加或删除片段等 *** 作,即当您更换/更改现有布局时,我们执行此类事务以替换片段.
捆绑包是配置更改时保存数据更改或将数据从一个活动传递到另一个活动或在片段之间传递数据所需的最便捷工具.阅读此内容.
对于link1和link2以及docs.捆绑包很容易理解.
希望编辑有所帮助.
总结以上是内存溢出为你收集整理的android – 单击列表视图中的项目时显示片段全部内容,希望文章能够帮你解决android – 单击列表视图中的项目时显示片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)