以前曾经自学过半个月android,最近突然需要android做一点小东西,赶紧补补知识。顺便总结点东西。
今天主要研究了listview的用法。
下面一个最简单的实现,继承ListActivity
MyListView.java
public class MyListView extends ListActivity {
private List<Map<String, String>> data = new ArrayList<Map<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setData();
SimpleAdapter myadapter = new SimpleAdapter(this, data,//数据集
R.layout.my_listview_item, new String[] { "editText1",
"editText2", "textView1", "textView2" },
new int[] {R.id.editText1,R.id.editText2,R.id.textView1,R.id.textView2,});
setListAdapter(myadapter);
}
/**
* 组装测试数据
*
* @return
*/
public void setData() {
HashMap<String, String> map;
for (int i = 0; i < 4; i++) {
map = new HashMap<String, String>();
map.put("editText1", "This is Title....." + i);
map.put("editText2", "This is text....." + i);
map.put("textView1", "This is Title....." + i);
map.put("textView2", "This is text....." + i);
data.add(map);
}
}
}
my_listview_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="vertical">
<EditText android:text="EditText" android:id="@+id/editText1"
android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
<EditText android:text="EditText" android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
<TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="TextView" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
这个就是最简单的实现了。
适配器还可以利用baseAdapt
class MyAdapt extends BaseAdapter
{
//这个方法就是返回list的个数,listview显示开始会调用这个方法获取个数(n),然后
//循环n次,调用getView 方法来构建listView
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
//这个就是绘制每一个ITem,这个方法和getCount()方法是最重要的,基本有了这2个方法
//就可以简单运行
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
if(arg1==null)
{
System.out.println("哈哈哈if"+arg0);
arg1 = layoutInflater.inflate(R.layout.my_listview_item, null); //通过flater初始化行视图
}
return arg1;
}
}
仍然先提供一个最简单的实现
下面是关于动态加载 所谓动态加载就是我一开始加载一部分数据。用户需要其他数据,点击按钮后继续加载,原理很简单,就是
在点按钮的时候再去连接服务器取得剩下的数据传过来加到适配器中去
需要注意的知识在加到适配器数据之后 适配器需要调用 myadapter.notifyDataSetChanged();方法通知适配器数据已经改变