好了直接上代码,不多说。但是第一次把自己动东西写在博客上,有什么问题豪情大家见谅。
没级adapater的建立
public class ProlistClassifyoneAdapter extends BaseAdapter { Activity mActivity; List<Productclassify> mProlistClassifyone; public ProlistClassifyoneAdapter(Activity mActivity, List<Productclassify> mProlistClassifyone) { this.mActivity = mActivity; this.mProlistClassifyone = mProlistClassifyone; } @Override public int getCount() { return mProlistClassifyone.size(); } @Override public Object getItem(int position) { return getItem(position); } @Override public long getItemId(int position) { return position; } static class ViewHolder { public TextView textView_cname; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = mActivity.getLayoutInflater().inflate(R.layout.near_one_item, null); holder.textView_cname = (TextView) convertView.findViewById(R.id.tv_cname); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.textView_cname.setText(mProlistClassifyone.get(position).getCName()); return convertView; } }
public class ProlistClassifytwoAdapter extends BaseAdapter { AppCompatActivity Activity; List<Productclassify> mProlistClassifytwo; private Map<Integer,List<Productclassify>> mMap; public ProlistClassifytwoAdapter(AppCompatActivity activity, List<Productclassify> mProlistClassifytwo, Map<Integer, List<Productclassify>> mMap) { Activity = activity; this.mProlistClassifytwo = mProlistClassifytwo; this.mMap = mMap; } @Override public int getCount() { return mProlistClassifytwo.size(); } @Override public Object getItem(int position) { return getItem(position); } @Override public long getItemId(int position) { return position; } static class ViewHolder{ public TextView textView_cname; public GridView gridView; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView==null){ holder=new ViewHolder(); convertView=Activity.getLayoutInflater().inflate(R.layout.near_two_item,null); holder.textView_cname= (TextView) convertView.findViewById(R.id.tv_cname); holder.gridView= (GridView)convertView.findViewById(R.id.gv_three); convertView.setTag(holder); }else { holder=(ViewHolder)convertView.getTag(); } holder.textView_cname.setText(mProlistClassifytwo.get(position).getCName()); holder.gridView.setAdapter(new ProlistClassifythreeAdapter(Activity, mMap.get(position))); // holder.gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { // @Override // public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // NearFragment nearFragment = (NearFragment) mActivity.getSupportFragmentManager().findFragmentByTag("near"); // if (nearFragment != null) { // nearFragment.bannerItemClick(mMap.get(position).get); // } // } // }); return convertView; } }
public class ProlistClassifythreeAdapter extends BaseAdapter { AppCompatActivity Activity; List<Productclassify> mProlistClassifythree; public ProlistClassifythreeAdapter(AppCompatActivity activity, List<Productclassify> mProlistClassifythree) { Activity = activity; this.mProlistClassifythree = mProlistClassifythree; } @Override public int getCount() { return mProlistClassifythree.size(); } @Override public Object getItem(int position) { return getItem(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view=View.inflate(Activity,R.layout.near_three_item,null); final TextView textView= (TextView) view.findViewById(R.id.tv_cname); textView.setText(mProlistClassifythree.get(position).getCName()); textView.setTag(mProlistClassifythree.get(position).getID()); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("aa", "aa"); if (Activity != null) { Log.d("aa", "bb"); NearFragment nearFragment = (NearFragment) Activity.getSupportFragmentManager().findFragmentByTag("near"); Log.d("aa", "cc"); if (nearFragment != null) { nearFragment.bannerItemClick(mProlistClassifythree.get(position).getID()); } } } }); return view; } }因为adapter是在fragment中建立,所以它的上下文很重要。
nearfragmen中的代码片段
//一级分类 mProlistClassifyone = new ArrayList<>(); //Log.e("ss", "mProlistClassify.size()" + mProlistClassify.size() + ""); for (int i = 0; i < mProlistClassify.size(); i++) { //Log.e("ss", mProlistClassify.get(i).getDepth() + ""); if (mProlistClassify.get(i).getDepth() == 1) { mProlistClassifyone.add(mProlistClassify.get(i)); } } mListview_productclassify.setAdapter(new ProlistClassifyoneAdapter(getActivity(), mProlistClassifyone)); Log.d("aa", "建立适配器成功"); mListview_productclassify.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //二级分类 int oneId = mProlistClassifyone.get(position).getID(); mProlistClassifytwo = new ArrayList<>(); for (int i = 0; i < mProlistClassify.size(); i++) { if (mProlistClassify.get(i).getParentID() == oneId) { mProlistClassifytwo.add(mProlistClassify.get(i)); } } Log.d("aa", "条目点击事件成功"); //三级分类 // Map<Integer, List<Productclassify>> map = new HashMap<>(); Log.d("aa", "创建表格布局成功"); for (int j = 0; j < mProlistClassifytwo.size(); j++) { List<Productclassify> listTemp = new ArrayList<Productclassify>(); for (int i = 0; i < mProlistClassify.size(); i++) { if (mProlistClassify.get(i).getParentID() == mProlistClassifytwo.get(j).getID()) { listTemp.add(mProlistClassify.get(i)); } } map.put(j, listTemp); } Log.d("aa", "三级分类获取成功"); mListview_productclassify2.setAdapter(new ProlistClassifytwoAdapter(mActivity, mProlistClassifytwo, map)); Log.d("aa", "建立三级分类适配器"); }});