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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中ListView的使用以及使用适配器设置数据源

發布時間:2025/3/19 Android 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中ListView的使用以及使用适配器设置数据源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

Android中使用Adapter(適配器)給RecycleView設置數據源:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110926089

之前講過使用適配器給RecycleView進行設置數據源,可能對于新手不是很友好。

如果只是想簡單的在頁面中顯示一個對象list的某屬性值怎樣使用適配器給listView設置數據源。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

首先在布局文件中添加一個ListView組件

<ListViewandroid:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="match_parent" />

然后再新建一個Bean用來存儲數據對象。

package com.badao.badaoimclient.bean; import android.support.annotation.NonNull;import java.util.List; public class ChatBean {private String msg;private int code;@NonNullprivate String id = "";private List<ChatItem> data;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public List<ChatItem> getData() {return data;}public void setData(List<ChatItem> data) {this.data = data;}@NonNullpublic String getId() {return id;}public void setId(@NonNull String id) {this.id = id;}public static class ChatItem {private int id;private String msgNum;private String content;//語音消息服務器地址private String remoteContent;private String sender;private String receiver;private String type;private boolean canReceived;private String sendTime;private String receivedTime;//語音時長private int voiceDuration;private boolean isRead;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getMsgNum() {return msgNum;}public void setMsgNum(String msgNum) {this.msgNum = msgNum;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getSender() {return sender;}public void setSender(String sender) {this.sender = sender;}public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}public String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isCanReceived() {return canReceived;}public void setCanReceived(boolean canReceived) {this.canReceived = canReceived;}public String getSendTime() {return sendTime;}public void setSendTime(String sendTime) {this.sendTime = sendTime;}public String getReceivedTime() {return receivedTime;}public void setReceivedTime(String receivedTime) {this.receivedTime = receivedTime;}public int getVoiceDuration() {return voiceDuration;}public void setVoiceDuration(int voiceDuration) {this.voiceDuration = voiceDuration;}public String getRemoteContent() {return remoteContent;}public void setRemoteContent(String remoteContent) {this.remoteContent = remoteContent;}public boolean isRead() {return isRead;}public void setRead(boolean read) {isRead = read;}}}

具體要使用的字段根據自己的需要。

然后在listview所在布局文件對應的activity中

首先先定義一個內部類的適配器

privateMyAdapter myAdapter;

適配器的聲明在activity的內部類中聲明

/*** 定義一個適配器*/private class MyAdapter extends BaseAdapter {private List<ImUserBean.RowsBean> rowsBeanList ;public MyAdapter(List<ImUserBean.RowsBean> rowsBeanList){this.rowsBeanList = rowsBeanList;}// 返回需要顯示的條目數@Overridepublic int getCount() {return rowsBeanList==null?0:rowsBeanList.size();}@Overridepublic Object getItem(int position) {return rowsBeanList.get(position);}@Overridepublic long getItemId(int position) {return 0;}/*** 獲取一個View用來顯示ListView的數據,會作為ListView的一個條目顯示* @param position 當前需要顯示的View的索引* @param convertView 或存數據的對象* @param parent* @return 返回需要顯示的View*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView textView = new TextView(AddressBookActivity.this);//設置每一項顯示的內容textView.setText(rowsBeanList.get(position).getImNumX()+"-----"+((int)rowsBeanList.get(position).getCanOnlineX()==1?"在線":"不在線"));//設置每一項的點擊事件textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(AddressBookActivity.this,SendMessageActivity.class);intent.putExtra("imnum",rowsBeanList.get(position).getImNumX());startActivity(intent);}});return textView;}}

使適配器擴展自BaseAdapter并重寫其方法,在內部類中

?

聲明數據源的實體bean的list,然后在內部類適配器的構造方法中對其進行賦值。

在getCount方法中設置顯示的條目數為數據源的長度。

在getItem中設置每一項為數據源對應下標的每一項。

在getView中設置一個視圖textView來顯示listView的數據,它將作為ListView的一個條目進行顯示。

并且還可以設置每一項的顯示的文本內容和點擊事件。

然后在onCreate方法中異步調用接口獲取數據源,并通過適配器的構造方法給

適配器中的數據源賦值。

然后給通過id獲取到的listView設置適配器。

activity完整代碼:

package com.badao.badaoimclient.view;import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.Adapter; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;import com.badao.badaoimclient.R; import com.badao.badaoimclient.bean.ImUserBean; import com.badao.badaoimclient.web.WebClient;import java.io.IOException; import java.util.List;import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response;public class AddressBookActivity extends AppCompatActivity {private ListView listView;private List<ImUserBean.RowsBean> rowsBeanList;private MyAdapter myAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_address_book);listView = findViewById(R.id.lv_list);//異步請求通訊錄WebClient.getInstance().getImUserList().enqueue(new Callback<ImUserBean>() {@Overridepublic void onResponse(Call<ImUserBean> call, Response<ImUserBean> response) {Log.i("response",response.toString());if(response.code()==200) {ImUserBean userBean = response.body();rowsBeanList = userBean.getRows();myAdapter = new MyAdapter(rowsBeanList);listView.setAdapter(myAdapter);}}@Overridepublic void onFailure(Call<ImUserBean> call, Throwable t) {Log.i("onFailure",t.toString());}});}/*** 定義一個適配器*/private class MyAdapter extends BaseAdapter {private List<ImUserBean.RowsBean> rowsBeanList ;public MyAdapter(List<ImUserBean.RowsBean> rowsBeanList){this.rowsBeanList = rowsBeanList;}// 返回需要顯示的條目數@Overridepublic int getCount() {return rowsBeanList==null?0:rowsBeanList.size();}@Overridepublic Object getItem(int position) {return rowsBeanList.get(position);}@Overridepublic long getItemId(int position) {return 0;}/*** 獲取一個View用來顯示ListView的數據,會作為ListView的一個條目顯示* @param position 當前需要顯示的View的索引* @param convertView 或存數據的對象* @param parent* @return 返回需要顯示的View*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView textView = new TextView(AddressBookActivity.this);//設置每一項顯示的內容textView.setText(rowsBeanList.get(position).getImNumX()+"-----"+((int)rowsBeanList.get(position).getCanOnlineX()==1?"在線":"不在線"));//設置每一項的點擊事件textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(AddressBookActivity.this,SendMessageActivity.class);intent.putExtra("imnum",rowsBeanList.get(position).getImNumX());startActivity(intent);}});return textView;}} }

?

總結

以上是生活随笔為你收集整理的Android中ListView的使用以及使用适配器设置数据源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。