在平板上经常能看到这种的情况:左边是一个列表,右边是列表项对应的内容,当点击某一个列表时,右边内容区也会随之改变。下面使用片段简单的演示:
思路:在MainActivity定义一个回调接口,并在列表点击回调该接口,然后在内容区的片段设置回调,同时改变片段的显示内容。具体代码如下:
主布局:
& lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android " 面向android:="水平" android: layout_width=" match_parent " android: layout_height=" match_parent " android: layout_marginLeft=" 16 dp " android: layout_marginRight=" 16 dp " android:分频器=" & # 63;android: attr/dividerVertical” android: showDividers=爸屑洹北? & lt;列表视图 android: id=癅 + id/book_list” android: layout_width=" 0 dp” android: layout_height=" match_parent " android: layout_weight=" 1 "/比; & lt; FrameLayout android: id=癅 + id/book_detail_container” android: layout_width=" 0 dp” android: layout_height=" match_parent " android: layout_weight=3/比; & lt;/LinearLayout>
列表视图项的布局和内容区片段的布局都比较简单,分别是一个Textview和两个Textview布的局,这里不再贴出。
MainActivity类(内容区的数据是写死的,仅仅做演示作用,一般来说需要从网络上获取数据):
公开课MainActivity延伸活动 { 私人> 公共类适配器BaseAdapter延伸 { 私人ListmData; 私人LayoutInflater LayoutInflater; 私人int selectionPosition=1; 公共适配器(List 数据,上下文语境) { 这一点。mData=https://www.yisu.com/zixun/data; 这一点。layoutInflater=LayoutInflater.from(上下文); } @Override 公共int getCount () { 返回mData.size (); } @Override 公共对象getItem (int位置) { 返回mData.get(位置); } @Override 公共长getItemId (int位置) { 返回的位置; } @Override 公众视线getView (int位置、视图convertView ViewGroup ViewGroup) { ViewHolder ViewHolder=零; 如果(convertView==null) { viewHolder=new viewHolder (); convertView=layoutInflater.inflate(出来。item_layout, null); viewHolder。电视=(TextView) convertView.findViewById (R.id.item_text); convertView.setTag (viewHolder); } 其他的 { viewHolder=(viewHolder) convertView.getTag (); } viewHolder.tv.setText (mData.get(位置)); 如果位置(selectionPosition==) { viewHolder.tv.setBackgroundColor (Color.YELLOW); } 其他的 { viewHolder.tv.setBackgroundColor (Color.WHITE); } 返回convertView; } 公共空间setSelectedPosition (int位置) { 这一点。selectionPosition=位置; } 类ViewHolder { TextView电视; } }
内容区类的片段:
公开课MyFragment延伸片段 { MainActivity活动; 私人TextView标题; 私人TextView desc; @Nullable @Override 公众视野> 公共类的书 { 私人int id; 私人字符串名称; 私人字符串desc; 公众书() { } 公共图书(int id、字符串名称字符串desc) { 这一点。id=id; this.name=名称; this.desc=desc; } 公共空间setName(字符串名称){ this.name=名称; } 公共空间setId (int id) { 这一点。id=id; } 公共空间setDesc(字符串desc) { this.desc=desc; } 公共int getId () { 返回id; } 公共字符串getName () { 返回名称; } 公共字符串getDesc () { 返回desc; } }
效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。