重载Activity类
public class GinwaveIMusicFrmaeHanderActivity extends Activity { private LayoutInflater mInflater; private Button mFrameTopLeftButton; private TextView mFrameTopMiddleTextView; private Button mFrameTopRightButton; private LinearLayout mLinearLayout; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setVolumeControlStream(AudioManager.STREAM_MUSIC); } public void setupViews(int id){ mInflater = (LayoutInflater)this.getLayoutInflater(); mLinearLayout = (LinearLayout)mInflater.inflate(R.layout.frame_layout_header, null); mFrameTopLeftButton = (Button)mLinearLayout.findViewById(R.id.frame_top_left); mFrameTopMiddleTextView = (TextView)mLinearLayout.findViewById(R.id.frame_top_middle); mFrameTopRightButton = (Button)mLinearLayout.findViewById(R.id.frame_top_right); mFrameTopLeftButton.setOnClickListener(new ClickFrameTopViewListener()); mFrameTopRightButton.setOnClickListener(new ClickFrameTopViewListener()); View localLinear = (View)mInflater.inflate(id, null); mLinearLayout.addView(localLinear, mLinearLayout.getChildCount()); setContentView(mLinearLayout); } public void setFrameTopLeftButtonDTI(int pDrawableId, String pText){ mFrameTopLeftButton.setVisibility(View.VISIBLE); mFrameTopLeftButton.setBackgroundResource(pDrawableId); mFrameTopLeftButton.setText(pText); } public void setFrameTopLeftButtonTI(String pText){ mFrameTopLeftButton.setVisibility(View.VISIBLE); mFrameTopLeftButton.setText(pText); } public void setFrameTopMiddleTextView(String pText){ mFrameTopMiddleTextView.setText(pText); } public void setFrameTopRightButtonDTI(int pDrawableId, String pText){ mFrameTopRightButton.setVisibility(View.VISIBLE); mFrameTopRightButton.setBackgroundResource(pDrawableId); mFrameTopRightButton.setText(pText); } public void setFrameTopRightButtonTI(String pText){ mFrameTopRightButton.setVisibility(View.VISIBLE); mFrameTopRightButton.setText(pText); } public void handleClickOnFrameTopLeftButton(){ } public void handleClickOnFrameTopRightButton(){ } class ClickFrameTopViewListener implements OnClickListener{ public void onClick(View v) { // TODO Auto-generated method stub if((TextView)v == mFrameTopLeftButton){ handleClickOnFrameTopLeftButton(); } if((TextView)v == mFrameTopRightButton){ handleClickOnFrameTopRightButton(); } } } }
继承自基类的Activity
public class ListViewPositionTest extends GinwaveIMusicFrmaeHanderActivity { /** Called when the activity is first created. */ private ListView mList; private ArrayAdapter<String> mAdapter; private List<String> mListData; private LayoutInflater mInflater; private LinearLayout mLinearLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupViews(R.layout.main2); mList = (ListView)mLinearLayout.findViewById(R.id.playlist_lv); initListData(); PlayListAdapter p = new PlayListAdapter(); mList.setAdapter(p); } private void initListData(){ mListData = new ArrayList<String>(); for( int i =0; i < 6; i++){ mListData.add("This is " + i + " item"); } } public void setupViews(int id){ mInflater = (LayoutInflater)this.getLayoutInflater(); mLinearLayout = (LinearLayout)mInflater.inflate(R.layout.frame_layout_header, null); View localLinear = (View)mInflater.inflate(id, null); mLinearLayout.addView(localLinear, mLinearLayout.getChildCount()); setContentView(mLinearLayout); } public class PlayListAdapter extends BaseAdapter{ public int getCount() { // TODO Auto-generated method stub return mListData.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return mListData.get(position); } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LinearLayout localLinear; String title = mListData.get(position); localLinear = (LinearLayout)mInflater.inflate(R.layout.playlist_vlist, null); TextView localTitle = (TextView)localLinear.findViewById(R.id.title); localTitle.setText(title); if(position == 0){ ImageView localImage = (ImageView)localLinear.findViewById(R.id.arrowHead); localImage.setVisibility(View.INVISIBLE); } return localLinear; } } }
main1.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/playlist_lv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/list_bg" android:headerDividersEnabled="false" android:footerDividersEnabled="true" android:divider="@drawable/list_divider" /> </RelativeLayout>
main2.xml:
<?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"> <ListView android:id="@+id/playlist_lv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/list_bg" android:headerDividersEnabled="false" android:footerDividersEnabled="true" android:divider="@drawable/list_divider" /> </LinearLayout>
不知道为什么在继承自基类的Activity中使用main1.xml布局,ListView可以显示最下边的线,使用main2.xml ListView不能显示最下边的线,如下图: