1.如图效果,左边listview,右边listview嵌套textview和gridview,展示全部gridview和左边条目点击改变事件
//main的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical">
<include layout="@layout/shouye_sousuokuang"></include>
<View
android:background="#9999"
android:layout_marginTop="3px"
android:layout_width="match_parent"
android:layout_height="0.75px"/>
<LinearLayout
android:layout_marginTop="3px"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ListView
android:id="@+id/f2_lv"
android:layout_width="100px"
android:layout_height="wrap_content"></ListView>
<FrameLayout
android:id="@+id/f2_frame"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</LinearLayout>
</LinearLayout>
//主页面
public class F2 extends BaseFragment implements View.OnClickListener,f2_View {
private LinearLayout sousuo_linear;
private F1iPresenter fp;
private List<JiuGongGeBean.DataBean> data;
private ListView f2_list;
private FrameLayout f2_frame;
@Override
public int bindLayout() {
return R.layout.f2;
}
@Override
public void initViews() {
//获取控件
sousuo_linear = findViewById(R.id.sousuo_linear);
f2_list = findViewById(R.id.f2_list);
sousuo_linear.setOnClickListener(this);
f2_frame = findViewById(R.id.f2_frame);
fp = new F1iPresenterImpl();
}
@Override
public void initData() {
fp.F2_Ren(new LunBoiModelImpl(),this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.sousuo_linear:
startActivity(new Intent(context,SousuoActivity.class));
break;
}
}
//请求成功
@Override
public void F2_SuccessInit(JiuGongGeBean jiuGongGeBean) {
data = jiuGongGeBean.getData();
//展示list
setList(0,data);
}
//请求失败
@Override
public void Error(String error) {
Toast.makeText(context,error,Toast.LENGTH_SHORT).show();
}
public void setList(int aa,List<JiuGongGeBean.DataBean> list) {
//开启FrameLayout 事务
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
final f2_you f2_you = new f2_you();
//每次替换
transaction.replace(R.id.f2_frame,f2_you,"f2_you").commit();
final ListAdaper la=new ListAdaper(context,list);
//设置左边的list
la.setAa(aa);
f2_list.setAdapter(la);
f2_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//点击子条目改变右边的数据
data.get(i).getCid();
int cid = data.get(i).getCid();
fp.YouZhongJianRen(cid+"",new LunBoiModelImpl(),f2_you);
la.setAa(i);
la.notifyDataSetChanged();
}
});
}
}
//左list布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textSize="16sp"
android:gravity="center"
android:id="@+id/f2_list_tv"
android:layout_width="100px"
android:layout_height="50px" />
</LinearLayout>
//左边list适配器
public class ListAdaper extends BaseAdapter {
private static final String TAG = "ListAdaper&&&&&&";
Context context;
List<JiuGongGeBean.DataBean> data;
//用于判断点击的那个子条目
int aa;
public int getAa() {
return aa;
}
public void setAa(int aa) {
this.aa = aa;
}
public ListAdaper(Context context, List<JiuGongGeBean.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
MyHolder myHolde=null;
if(view==null){
view=View.inflate(context,R.layout.f2_list,null);
myHolde=new MyHolder();
myHolde.tv=view.findViewById(R.id.f2_list_tv);
view.setTag(myHolde);
}else{
myHolde= (MyHolder) view.getTag();
}
myHolde.tv.setText(data.get(i).getName());
//根据传过来的值设置选择背景颜色
if(aa==i){
myHolde.tv.setBackgroundColor(Color.parseColor("#FAFAFA"));
}else{
myHolde.tv.setBackgroundColor(Color.WHITE);
}
return view;
}
class MyHolder{
TextView tv;
}
}
//左list子布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/you_lv"
android:layout_width="wrap_content"
android:layout_height="match_parent"></ListView>
</LinearLayout>
//右边FrameLayoutpublic class f2_you extends Fragment implements FenLeiYouView{
private ListView you_lv;
private static final String TAG = "f2_you----";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.f2_you, container, false);
you_lv = view.findViewById(R.id.you_lv);
Log.d(TAG, "onCreateView() returned: " + you_lv);
F1iPresenter fp=new F1iPresenterImpl();
fp.YouZhongJianRen("1",new LunBoiModelImpl(),this);
return view;
}
@Override
public void ShowYou(XiangQing xiangQing) {
Log.e("F2_YOU",xiangQing.getCode()+"aaa");
List<XiangQing.DataBean> data = xiangQing.getData();
YouListAdaper ya=new YouListAdaper(data,getContext());
Log.d(TAG, "ShowYou() returned: " + you_lv);
you_lv.setAdapter(ya);
}
@Override
public void Error(String error) {
Toast.makeText(getContext(),error,Toast.LENGTH_SHORT).show();
}
}
//右边FrameLayout布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/you_lv"
android:layout_width="wrap_content"
android:layout_height="match_parent"></ListView>
</LinearLayout>
//右边listview子布局 f2_you_grid
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5px"
android:orientation="vertical">
<TextView
android:textSize="16sp"
android:layout_marginTop="3px"
android:layout_marginBottom="5px"
android:layout_marginLeft="25px"
android:id="@+id/you_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.bwie.jd_2.Zidingyi.MyGridView
android:background="#FAFAFA"
android:numColumns="3"
android:id="@+id/you_gv"
android:layout_width="wrap_content"
android:layout_height="match_parent"></com.bwie.jd_2.Zidingyi.MyGridView>
</LinearLayout>
//右边FrameLayout list适配器
public class YouListAdaper extends BaseAdapter {
List<XiangQing.DataBean> data;
Context context;
public YouListAdaper(List<XiangQing.DataBean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
MyHolder myHolder;
if(view==null){
myHolder=new MyHolder();
view=View.inflate(context, R.layout.f2_you_zi,null);
myHolder.tv = view.findViewById(R.id.you_tv);
myHolder.gv = view.findViewById(R.id.you_gv);
view.setTag(myHolder);
}else{
myHolder= (MyHolder) view.getTag();
}
List<XiangQing.DataBean.ListBean> list = data.get(i).getList();
myHolder.tv.setText(data.get(i).getName());
MyGridAdaper myGridAdaper=new MyGridAdaper(list,context);
myHolder.gv.setAdapter(myGridAdaper);
return view;
}
class MyHolder{
GridView gv;
TextView tv;
}
}
4.要展示全部的gridview,自定义gridview
public class MyGridView extends GridView {
public MyGridView(Context context) {
this(context,null);
}
public MyGridView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//改变宽高,设置成最大
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, measureSpec);
}
}
//gridview适配器
public class MyGridAdaper extends BaseAdapter{
List<XiangQing.DataBean.ListBean> list;
Context context;
public MyGridAdaper(List<XiangQing.DataBean.ListBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
MyGridHolder myGridHolder;
if(view==null){
myGridHolder=new MyGridHolder();
view=View.inflate(context, R.layout.f2_you_grid,null);
myGridHolder.iv=view.findViewById(R.id.g_iv);
myGridHolder.tv=view.findViewById(R.id.g_tv);
view.setTag(myGridHolder);
}else{
myGridHolder= (MyGridHolder) view.getTag();
}
Glide.with(context).load(list.get(i).getIcon()).into(myGridHolder.iv);
myGridHolder.tv.setText(list.get(i).getName());
return view;
}
class MyGridHolder{
ImageView iv;
TextView tv;
}
}
//MyGridView 子布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_height="match_parent">
<ImageView
android:layout_gravity="center_horizontal"
android:id="@+id/g_iv"
android:layout_width="60px"
android:layout_height="50px" />
<TextView
android:layout_marginTop="2px"
android:gravity="center_horizontal"
android:id="@+id/g_tv"
android:layout_width="60px"
android:layout_height="32px" />
</LinearLayout>