Android 单击listview中的项目时显示片段
我在片段类中有一个listview,它从JSON获取数据。到目前为止,我能够在列表视图中显示数据。(这里的数据是新闻项)。我想在listview中单击特定新闻时显示新闻的详细页面 例如:Listview只包含新闻的标题和图像。单击该列表视图时,应显示该特定新闻片段的详细版本。我该怎么做 这是具有Listview的片段类Android 单击listview中的项目时显示片段,android,json,android-fragments,android-listview,Android,Json,Android Fragments,Android Listview,我在片段类中有一个listview,它从JSON获取数据。到目前为止,我能够在列表视图中显示数据。(这里的数据是新闻项)。我想在listview中单击特定新闻时显示新闻的详细页面 例如:Listview只包含新闻的标题和图像。单击该列表视图时,应显示该特定新闻片段的详细版本。我该怎么做 这是具有Listview的片段类 package com.fortuna.cinemalk; import java.util.ArrayList; import android.app.Activity;
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();
}
}
}
package com.fortuna.cinemalk;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.app.FragmentManager;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentTransaction;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.GridView;
导入android.widget.ListView;
导入android.content.Intent;
导入android.widget.AdapterView;
导入com.fortuna.cinemalk.adapter.LazyAdapter;
导入com.fortuna.cinemalk.model.BaseElement;
导入com.fortuna.cinemalk.service.CommonVariable;
导入com.fortuna.cinemalk.service.JSONServices;
导入com.fortuna.cinemalk.util.Element;
公共类NewsFramgment扩展了片段{
私有GridView GridView;
私有列表视图列表视图;
私人ArrayList新闻;
专用懒散适配器;
私人活动;
私有公共变量公共变量;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.news_碎片、容器、,
假);
activity=this.getActivity();
commonVariable=(commonVariable)activity.getApplication();
//gridView=(gridView)view.findViewById(R.id.gridView2);
listView=(listView)view.findViewById(R.id.list);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
android.support.v4.app.Fragment detail=新的NewsDetailFragment();
android.support.v4.app.FragmentManager FragmentManager=getFragmentManager();
fragmentManager.beginTransaction().add(R.id.content_frame,detail).addToBackStack(“back”).commit();
}
});
新建背景().execute();
返回视图;
}
公共类后台任务{
@凌驾
受保护的Void doInBackground(Void…参数){
News=JSONServices.getNewsDescription();
返回null;
}
@凌驾
/*再次检查*/
受保护的void onPostExecute(void结果){
commonVariable.setNewsDescription(新闻);
adapter=newlazyadapter(新闻、活动、元素.News_LIST.getType());
setAdapter(适配器);
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
}
}
在代码中,您会注意到当单击一个项目时,它会移动到NewsDetailFragment。这就是我现在要编写的类
PS:MyJSON已经包含了所有的细节,包括标题、图片、描述
更新::这是我的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();
}
}
}
package com.fortuna.cinemalk;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.app.FragmentManager;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentTransaction;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.GridView;
导入android.widget.ListAdapter;
导入android.content.Intent;
导入android.widget.AdapterView;
导入com.fortuna.cinemalk.adapter.LazyAdapter;
导入com.fortuna.cinemalk.model.BaseElement;
导入com.fortuna.cinemalk.service.CommonVariable;
导入com.fortuna.cinemalk.service.JSONServices;
导入com.fortuna.cinemalk.util.Element;
公共类NewsDetailFragment扩展了该片段{
私有GridView GridView;
私有视图1;
私有ArrayList newsdetail;
专用懒散适配器;
私人活动;
私有公共变量公共变量;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.newsdetail_碎片,容器,
假);
activity=this.getActivity();
commonVariable=(commonVariable)activity.getApplication();
view1=(View)View.findViewById(R.id.list);
/*setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
android.support.v4.app.Fragment detail=新的TheaterDetailFragment();
android.support.v4.app.FragmentManager FragmentManager=getFragmentManager();
fragmentManager.beginTransaction().add(R.id.content_frame,detail).addToBackStack(“back”).commit();
}
}); */
新建背景().execute();
返回视图;
}
公共类后台任务{
@凌驾
受保护的Void doInBackground(Void…参数){
newsdetail=JSONServices.getNewsDescription();
返回null;
}
@凌驾
/*再次检查*/
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
Fragment profileFragment = new MovieDetailFragment();//the fragment you want to show
profileFragment.setArguments(bundle);
fragmentTransaction
.replace(R.id.content_frame, profileFragment);//R.id.content_frame is the layout you want to replace
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.frag_for_accsummary,container, false);
final FragmentTransaction ft= getFragmentManager().beginTransaction();
//geting resources
Resources res=getActivity().getResources();
title=res.getStringArray(R.array.title);
// TODO Auto-generated method stub
ListView l=(ListView)v.findViewById(R.id.list);
MyAadapter m=new MyAadapter(getActivity(),R.layout.singlerow, title, icon);//custom adapter
//title--> array of text to be shown on list icon--> array of images to be shown on list R.layout.singlerow--> tells how single row should appear in list
l.setAdapter(m);
l.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
// TODO Auto-generated method stub
Log.i("in seton","setonclick");
switch(position){
case 0:
AccSummary frag0=new AccSummary();
bun.putString("uname",uname);
bun.putString("sessid",sessid);
bun.putString("custid",custid1);
frag0.setArguments(bun);
ft.replace(R.id.lin2,frag0);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Log.i("FragFor", uname);
break;
//-------------------------------------------------------------------
case 1:
FromAcc acc=new FromAcc();
bun.putString("Name",uname);
bun.putString("sessid",sessid);// key - value pair
bun.putString("custid",custid1);
acc.setArguments(bun);
ft.replace(R.id.lin2, acc);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
break;
case 2:break;
case 3:break;
case 4:break;
case 5:ChangepassFrag cf=new ChangepassFrag();
bun.putString("uname",uname);
bun.putString("sessid",sessid);
bun.putString("custid",custid);
bun.putString("password",pass);
cf.setArguments(bun);
ft.replace(R.id.lin2,cf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
break;
case 6: break;
case 7:break;
case 8:break;
case 9:
Fragment1 f=new Fragment1();
bun.putString("uname",uname);
bun.putString("sessid",sessid);
// bun.putString("custid",custid1);
f.setArguments(bun);
ft.replace(R.id.lin2,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
break;
case 10:break;
}
}
});
return v;
}