//继承Fragment,静态Fragment数据传值方式传值给右侧Fragment
<fragment android:id="@+id/f1" class="com.example.administrator.week_demo_b.fragment_demo1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/f2" class="com.example.administrator.week_demo_b.fragment_demo2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" />//f1拿数据,传值给f2
package com.example.administrator.week_demo_b; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.TextHttpResponseHandler; import java.util.ArrayList; import java.util.List; import cz.msebera.android.httpclient.Header; public class fragment_demo1 extends Fragment { private View view; private ListView list_item; private String url="http://www.meirixue.com/api.php?c=category&a=getall"; private List<Info> infos; private OntransVlues ontransVluse; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.activity_fragment_demo1, null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //拿到控件 list_item = (ListView) view.findViewById(R.id.list_item); //解析数据 AsyncHttpClient client=new AsyncHttpClient(); client.get(url, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { Gson gson=new Gson(); infos = gson.fromJson(responseString, new TypeToken<List<Info>>() {}.getType()); List<String>list_name=new ArrayList<String>(); for (int i = 0; i <infos.size() ; i++) { String cname = infos.get(i).getCname(); list_name.add(cname); } //适配器 list_item.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_expandable_list_item_1,list_name)); } }); //点击条目传值 list_item.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //点击条目接口传值 ontransVluse.see(infos.get(position).getNodes()); } }); } //创建接口 public interface OntransVlues{ void see(List<Info.NodesBean> list); } //对外提供访问方法 public void setOntransVlues(OntransVlues ontransVlues){ this.ontransVluse=ontransVlues; } }//f2拿到控件,找到f1需要调用的接口,进行赋值
package com.example.administrator.week_demo_b; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class fragment_demo2 extends Fragment { private View view; private TextView text_name; private ListView list_item2; private List<Info.NodesBean>list_s=new ArrayList<>(); private TextView text_name1; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.activity_fragment_demo2, null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //找到控件 list_item2 = (ListView) view.findViewById(R.id.list_item2); //调用f1的接口就得拿到f1 fragment_demo1 fragment_demo1 = (com.example.administrator.week_demo_b.fragment_demo1) getActivity().getSupportFragmentManager().findFragmentById(R.id.f1); //通过f1拿到接口。获得数据 fragment_demo1.setOntransVlues(new fragment_demo1.OntransVlues() { @Override public void see(List<Info.NodesBean> list) { list_s=list; list_item2.setAdapter(new Myadapter()); } }); } class Myadapter extends BaseAdapter{ @Override public int getCount() { return list_s.size(); } @Override public Object getItem(int position) { return list_s.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView=View.inflate(getActivity(),R.layout.list_item_layout,null); text_name1 = (TextView) convertView.findViewById(R.id.text_name); text_name1.setText(list_s.get(position).getCategory_name()); return convertView; } } }