日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android双联动列表,Android Fragment实现列表和内容联动

發(fā)布時(shí)間:2025/3/8 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android双联动列表,Android Fragment实现列表和内容联动 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在平板上經(jīng)常能看到這種的情況:左邊是一個(gè)列表,右邊是列表項(xiàng)對(duì)應(yīng)的內(nèi)容,當(dāng)點(diǎn)擊某一個(gè)列表時(shí),右邊內(nèi)容區(qū)也會(huì)隨之改變。下面使用fragment簡(jiǎn)單的demo:

思路:在mainactivity定義一個(gè)回調(diào)接口,并在列表點(diǎn)擊回調(diào)該接口,然后在內(nèi)容區(qū)的fragment設(shè)置回調(diào),同時(shí)改變fragment的顯示內(nèi)容。具體代碼如下:

主布局:

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginleft="16dp"

android:layout_marginright="16dp"

android:divider="?android:attr/dividervertical"

android:showdividers="middle">

android:id="@+id/book_list"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"/>

android:id="@+id/book_detail_container"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="3"/>

listview的item布局和內(nèi)容區(qū)fragment的布局都比較簡(jiǎn)單,分別是一個(gè)textview和兩個(gè)textview布局,這里不再貼出。

mainactivity類(lèi)(內(nèi)容區(qū)的數(shù)據(jù)是寫(xiě)死的,僅僅做演示作用,一般來(lái)說(shuō)需要從網(wǎng)絡(luò)上獲取數(shù)據(jù)):

public class mainactivity extends activity

{

private onchangelistener onchangedlistener;

list books;

list book_name = new arraylist<>();

listview listview;

adapter adapter;

@override

protected void oncreate(bundle savedinstancestate)

{

super.oncreate(savedinstancestate);

setcontentview(r.layout.main);

books = new arraylist<>();

initdata();

for (int i = 0 ; i < books.size() ; i++)

{

book_name.add(books.get(i).getname());

}

listview = (listview) findviewbyid(r.id.book_list);

adapter = new adapter(book_name , this);

listview.setadapter(adapter);

myfragment fragment = new myfragment();

fragmentmanager fragmentmanager = getfragmentmanager();

fragmenttransaction transaction = fragmentmanager.begintransaction();

transaction.replace(r.id.book_detail_container , fragment);

transaction.commit();

listview.setonitemclicklistener(new adapterview.onitemclicklistener()

{

@override

public void onitemclick(adapterview> parent, view view, int position, long id)

{

adapter.setselectedposition(position);

adapter.notifydatasetinvalidated();

if (onchangedlistener != null)

{

onchangedlistener.changetext(books.get(position));

}

}

});

}

private void initdata()

{

book book1 = new book();

book1.setid(1);

book1.setname("瘋狂java講義");

book1.setdesc("一本全面的,深入的java學(xué)習(xí)圖書(shū),受到廣大讀者的熱烈喜愛(ài),已經(jīng)被多家高校選為教材,成為國(guó)內(nèi)一線的java學(xué)習(xí)素材");

books.add(book1);

book book2 = new book();

book2.setid(2);

book2.setname("瘋狂android講義");

book2.setdesc("android學(xué)習(xí)者的首選教材,常年占據(jù)京東,當(dāng)當(dāng),亞馬遜3大網(wǎng)店android銷(xiāo)量排行榜首,是人人可必備的android入門(mén)圖書(shū)");

books.add(book2);

book book3 = new book();

book3.setid(3);

book3.setname("java ee企業(yè)應(yīng)用實(shí)戰(zhàn)");

book3.setdesc("全面介紹java ee開(kāi)發(fā)的struts2 , spring 3 , hibernate 4 架構(gòu),可以通過(guò)該書(shū)系統(tǒng)學(xué)習(xí)企業(yè)級(jí)開(kāi)發(fā),全面掌握java學(xué)習(xí)");

books.add(book3);

book book4 = new book();

book4.setid(4);

book4.setname("html5開(kāi)發(fā)");

book4.setdesc("全面介紹html5,css ,javascript等知識(shí)點(diǎn),通過(guò)該書(shū)可以系統(tǒng)的學(xué)習(xí)web前端開(kāi)發(fā),通常javascript腳本設(shè)置動(dòng)態(tài)頁(yè)面");

books.add(book4);

}

public void setonchangelistener(onchangelistener onchangelistener)

{

this.onchangedlistener = onchangelistener;

}

interface onchangelistener

{

void changetext(book book);

}

}

列表的adapter類(lèi):

public class adapter extends baseadapter

{

private list mdata;

private layoutinflater layoutinflater;

private int selectionposition = -1;

public adapter(list data , context context)

{

this.mdata = data;

this.layoutinflater = layoutinflater.from(context);

}

@override

public int getcount()

{

return mdata.size();

}

@override

public object getitem(int position)

{

return mdata.get(position);

}

@override

public long getitemid(int position)

{

return position;

}

@override

public view getview(int position, view convertview, viewgroup viewgroup)

{

viewholder viewholder = null;

if (convertview == null)

{

viewholder = new viewholder();

convertview = layoutinflater.inflate(r.layout.item_layout , null);

viewholder.tv = (textview) convertview.findviewbyid(r.id.item_text);

convertview.settag(viewholder);

}

else

{

viewholder = (viewholder) convertview.gettag();

}

viewholder.tv.settext(mdata.get(position));

if (selectionposition == position)

{

viewholder.tv.setbackgroundcolor(color.yellow);

}

else

{

viewholder.tv.setbackgroundcolor(color.white);

}

return convertview;

}

public void setselectedposition(int position)

{

this.selectionposition = position;

}

class viewholder

{

textview tv;

}

}

內(nèi)容區(qū)的fragment類(lèi):

public class myfragment extends fragment

{

mainactivity activity;

private textview title;

private textview desc;

@nullable

@override

public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate)

{

view view = inflater.inflate(r.layout.fragment_book_detail , null);

title = (textview) view.findviewbyid(r.id.book_title);

desc = (textview) view.findviewbyid(r.id.book_desc);

log.d("fragment" , "created");

activity = (mainactivity) getactivity();

activity.setonchangelistener(new mainactivity.onchangelistener()

{

@override

public void changetext(book book)

{

title.settext(book.getname());

desc.settext(book.getdesc());

}

});

return view;

}

}

book實(shí)體類(lèi):

public class book

{

private int id;

private string name;

private string desc;

public book()

{

}

public book(int id , string name , string desc)

{

this.id = id;

this.name = name;

this.desc = desc;

}

public void setname(string name) {

this.name = name;

}

public void setid(int id) {

this.id = id;

}

public void setdesc(string desc) {

this.desc = desc;

}

public int getid() {

return id;

}

public string getname() {

return name;

}

public string getdesc() {

return desc;

}

}

效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持萬(wàn)仟網(wǎng)。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的android双联动列表,Android Fragment实现列表和内容联动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。