使用ListActivity可以很方便的幫助我們創建列表視圖,如果只需要一個全屏的listView視圖,那麼
setContentView(R.layout.XXX);也可以省略了,系統会自动帮我们构造出一个全屏的列表。但如果
需要使用ListActivity且視圖非純ListView的話,就需要為視圖創建一個佈局文件,不過需要注意幾個地方
最後就是mianActivity.java
setContentView(R.layout.XXX);也可以省略了,系統会自动帮我们构造出一个全屏的列表。但如果
需要使用ListActivity且視圖非純ListView的話,就需要為視圖創建一個佈局文件,不過需要注意幾個地方
下面會註釋出來
下面給出本例子的效果圖( TextView + ListView )
那麼該視圖的佈局main.xml, 注意ListView 的ID, listview用的是系統的自定義的id,查看ListActivity源碼onContentChanged裏面就有
mList = (ListView)findViewById(com.android.internal.R.id.list);
所以這裡的id是用list啦,不能用其他用其他會報錯的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/blue"
android:text="here is title!!!!!!"/>
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
</LinearLayout>
listview每一項的佈局lv_item.xml, 一個TextView和一個button,注意RelativeLayout的descendantFocusablility,阻止聚焦在後代,沒有這句list就不能點擊
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
>
<TextView android:id="@+id/tv_of_lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:textColor="@color/white"
android:text="1212"/>
<Button android:id="@+id/btn_of_lv"
android:layout_alignRight="@id/tv_of_lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DEL"/>
</RelativeLayout>
ListItem.java
public class ListItem {
public final static String TAG = "ListItem";
private final int tv_layout = R.id.tv_of_lv;
private final int btn_layout = R.id.btn_of_lv;
private Context context = null;
private View view = null;
private TextView tv = null;
private Button btn = null;
public ListItem(Context context) {
// TODO Auto-generated constructor stub
this.context = context;
this.init();
}
public Context getContext() {
return context;
}
private void init() {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.lv_item, null);
tv = (TextView) view.findViewById(tv_layout);
btn = (Button) view.findViewById(btn_layout);
btn.setOnClickListener(clickListener);
}
public View getView() {
return view;
}
public void setTextViewTxt(String txt) {
tv.setText(txt);
}
View.OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "click", 1000).show();
}
};
}
最後就是mianActivity.java
public class MyRssActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv = this.getListView();
rssAdapter mAdapter = new rssAdapter(this);
mAdapter.addItem("123123");
mAdapter.addItem("465456");
setListAdapter(mAdapter);
}
private class rssAdapter extends BaseAdapter {
Context context = null;
List<ListItem> mObjects = null;
public rssAdapter(Context context) {
this.context = context;
mObjects = new ArrayList<ListItem>();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mObjects.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mObjects.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null) {
convertView = mObjects.get(position).getView();//new ListItem(context).getView();
}
else {
}
return convertView;//mObjects.get(position).getView();
}
public void addItem(String txt) {
ListItem mItem = new ListItem(context);
mItem.setTextViewTxt(txt);
mObjects.add(mItem);
}
}
}