編輯:關於android開發
ListView控件介紹:用於將數據庫中的數據或者網絡中的數據通過列表的形式顯示出來;ListView采用MVC模式將前端顯示和後端數據進行分離。 也就是說,ListView控件在裝載數據時並不是直接使用ListView.add或者類似的方法添加數據,而是需要指定一個Adapter對象。該對象相當於MVC模式中的C(控制器),ListView相當於MVC模式中的V(視圖),用於顯示數據。為ListView提供數據的List或數組相當於MVC模式中的M(模型)在ListView控件中通過Adapter對象獲得需要顯示的數據,在創Adapter對象時需要指定要顯示的數據(List或數組對象),因此,要顯示的數據與ListView之間通過Adapter對象進行連接,同時又互相獨立,也就是說,ListView只知道顯示的數據來自Adapter,並不知道這些數據是來自List還是數組。
1.ListView應用實例(這裡是在java代碼中操作listview對象的):
public class MyListActivity extends ListActivity{
//定義一個字符串數組,代表我們的數據源
private static final String[] COUNTRIES=new String[]{"中國","法國","美國","德國","日本","朝鮮","印度"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//把我們需要展現的數據展現到ListView上
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,COUNTRIES));
//通過getListView()方法獲取listview對象
ListView lv=getListView();
lv.setTextFilterEnabled(true);
Log.e("MyListActivity", "listview界面產生了");
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//通過getText()方法獲取用戶選擇的ListView中的選項信息
Log.e("MyListActivity", "列表選項被點擊了,看看會出現什麼");
Toast.makeText(getApplicationContext(), ((TextView)view).getText(), Toast.LENGTH_LONG).show();
}
});
}
}
列表項xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp">
</TextView>
Java代碼①:
public class MyActivity extends Activity{
private ListView listview;
private ArrayAdapter<String> adapter;
//定義一個數據源
private List<String> data=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取數據源
data=MyDataSource.getDataSource();
adapter=new ArrayAdapter<String>(this, R.layout.list_item, data);
listview=(ListView) findViewById(R.id.listview);
//將數據源通過adapter顯示到listview視圖上
listview.setAdapter(adapter);
}
}
Java代碼②:
public class MyDataSource {
public MyDataSource() {
super();
}
public static List<String> getDataSource(){
List<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("廣州");
list.add("湖北");
list.add("湖南");
list.add("深圳");
list.add("西安");
return list;
}
}
布局文件activity_main.xml代碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_world" />
</RelativeLayout>
列表項list_item.xml代碼:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp">
</TextView>
2.ListView應用實例:
在上面的兩個例子中我們用的都是ArrayAdapter(數組適配器),這個適配器顯示的數據源比較單一;而SimpleAdapter能定義各種各樣的布局出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(復選框)等;
下面我們就來看看如何使用SimpleAdapter
①MainActivity.java
public class MainActivity extends Activity {
private ListView mListView;
private SimpleAdapter mSimpleAdapter=null;
private List<Map<String, Object>> data=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView=(ListView) findViewById(R.id.listview);
data=new ArrayList<Map<String,Object>>();
/**
* setAdapter方法:
* 第一個參數:是一個Context的對象;
* 第二個參數:是一個集合,采用這樣的形式List<Map<String, Object>>,為什麼呢?
* 這裡的List<E>用來存儲listview中的列表項,而List<E>集合中的每一個元素,又都有自己的特征
* 因此我們通過用map集合代表list的元素的方式,完成了listview數據展示的多元化;
* 第三個參數:是一個布局文件,用來展示listview的每個列表項的內容
* 第四個參數:是我們List<Map<String, Object>>中Map<key,value>的key的數組表示;
* 第五個參數:使我們List<Map<String, Object>>中Map<key,value>的value的數組表示;
*/
Map<String, Object> mMap1=new HashMap<String, Object>();
mMap1.put("title", "我是第一個功能");
mMap1.put("icon", R.drawable.ic_launcher);
Map<String, Object> mMap2=new HashMap<String, Object>();
mMap2.put("title", "我是第二個功能");
mMap2.put("icon", R.drawable.ic_launcher);
Map<String, Object> mMap3=new HashMap<String, Object>();
mMap3.put("title", "我是第三個功能");
mMap3.put("icon", R.drawable.ic_launcher);
data.add(mMap1);
data.add(mMap2);
data.add(mMap3);
mListView.setAdapter(new SimpleAdapter(this, data, R.layout.list_item,
new String[]{"title","icon"}, new int[]{R.id.tv,R.id.iv}));
}
}
②activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
③list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
3.自定義適配器:android界面中有時候需要顯示稍微復雜的界面時,就需要我們自己定義一個adapter,那麼就要繼承BaseAdapter。
Android pull解析xml文件,androidpull解析xml本文介紹android中使用pull來解析xml文件 先自己寫一個xml文件,存一些天氣信息 &
Android官方文檔之Introduction 寫在前面的話:接觸Android的時間也不短了,聽了視頻、看了書、敲了代碼,寫了博客,做了demo。。。
android開發-數據存儲Ⅰ,android數據存儲本章講述在Android開發中,簡單的數據存儲。涉及知識主要是SharedPreferences,及多頁面切換Vie
Android React Native自定義組件的流程 假設我們現在有這麼一個需求,就是自定義一個組件,該組件由一個小圖標和圖標的文字說明組成,並且帶有背景色,背景