项目地址:
链接: https://pan.baidu.com/s/1OHSva0M5PIQMWNP0iwzlLg 提取码: csf5
求大能帮我解决一下。我不知道怎么去写这个跳转。
鼠标点击需要跳转(例如点击“苹果手机”);
public class MsgFragment extends Fragment {
View view;
TextView textView;
private int i;
private String str;
private String[] mVals = new String[] { "苹果手机", "笔记本电脑", "电饭煲", "腊肉",
"特产", "剃须刀", "宝宝", "康佳" };
private LayoutInflater mInflater;
private FlowLayout mFlowLayout;
//自定义recyclerveiw的适配器
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInflater = LayoutInflater.from(getContext());
}
public MsgFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_msg, container, false);
mFlowLayout = view.findViewById(R.id.id_flowlayout);
initData();
return view;
}
public void initData() {
/**
* 找到搜索标签的控件
*/
for ( i = 0; i < mVals.length; i++) {
final TextView tv = (TextView) mInflater.inflate(
R.layout.search_label_tv, mFlowLayout, false);
tv.setText(mVals[i]);
str = tv.getText().toString();
//点击事件
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
switch (str) {
case "苹果手机":
break;
case "笔记本电脑":
break;
case "电饭煲":
break;
case "腊肉":
break;
case "特产":
break;
case "剃须刀":
break;
case "宝宝":
break;
case "康佳":
break;
default:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
mFlowLayout.addView(tv);//添加到父View
}
}
}
需要跳转到的fragment
public class CollectFragment extends Fragment {
private View view;//定义view用来设置fragment的layout
public RecyclerView mCollectRecyclerView;//定义RecyclerView
//定义以goodsentity实体类为对象的数据集合
private ArrayList<GoodsEntity> goodsEntityList = new ArrayList<GoodsEntity>();
//自定义recyclerveiw的适配器
private CollectRecycleAdapter mCollectRecyclerAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//获取fragment的layout
view = inflater.inflate(R.layout.item_content, container, false);
//对recycleview进行配置
initRecyclerView();
//模拟数据
initData();
return view;
}
/**
* TODO 模拟数据
*/
private void initData() {
for (int i=0;i<10;i++){
GoodsEntity goodsEntity=new GoodsEntity();
goodsEntity.setGoodsName("模拟数据"+i);
goodsEntity.setGoodsPrice("100"+i);
goodsEntityList.add(goodsEntity);
}
}
/**
* TODO 对recycleview进行配置
*/
private void initRecyclerView() {
//获取RecyclerView
mCollectRecyclerView=view.findViewById(R.id.collect_recyclerView);
//创建adapter
mCollectRecyclerAdapter = new CollectRecycleAdapter(getActivity(), goodsEntityList);
//给RecyclerView设置adapter
mCollectRecyclerView.setAdapter(mCollectRecyclerAdapter);
//设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局
//参数是:上下文、列表方向(横向还是纵向)、是否倒叙
mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
//设置item的分割线
mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
//RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义
mCollectRecyclerAdapter.setOnItemClickListener(new CollectRecycleAdapter.OnItemClickListener() {
@Override
public void OnItemClick(View view, GoodsEntity data) {
//此处进行监听事件的业务处理
Toast.makeText(getActivity(),"我是item",Toast.LENGTH_SHORT).show();
}
});
}
}
问题已解决,这只是一个思路,对照代码自己看一下,
链接:https://pan.baidu.com/s/1mu_GOwwcvzVI1u1l1mK55Q
提取码:ce12
MsgFragment中把 switch (str) 改成 switch (((TextView)v).getText().toString())
CollectFragment中把 view = inflater.inflate(R.layout.item_content, container, false); 改成view = inflater.inflate(R.layout.recyclerview, container, false);_
——————分割线——————
新建一个ContainerFragment作为第一页的容器
package com.example.qw.dualnavigation.fragment;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.qw.dualnavigation.R;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link ContainerFragment.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link ContainerFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class ContainerFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_container, container, false);
//初始化fragment
MsgFragment msgFragment = new MsgFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fly_fragment, msgFragment).show(msgFragment).commit();
return view;
}
}
fragment_container.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.ContainerFragment">
<FrameLayout
android:id="@+id/fly_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</FrameLayout>
然后 MsgFragment中
@SuppressLint("ResourceType")
private void changeToAnotherFragment() {
CollectFragment collectFragment = new CollectFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fly_fragment, collectFragment).show(collectFragment).commit();
}
MainFragmentAdapter中
fragment = new CollectFragment();
改成
fragment = new ContainerFragment();
大概是这样,不知道最后是做成什么效果的,目前数据是显示出来的,但是应该还有有改的空间