风雨静婷 发表于 2013-1-30 04:16:17

ListView和SlidingDrawer

XML文件

main.xml文件
两个控件按钮btnListView和btnSlidingDrawer
<Button
                android:id="@+id/listView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/listviewStr" />

<Button
                android:id="@+id/btnSlipdingdrawer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/slidingDrawerStr" />


mylistview.xml文件

一个控件ListView
<?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" >

    <ListView
      android:id="@+id/listView1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    </ListView>   
   
</LinearLayout>



mylistview_item.xml文件

两个控制:一个ImageView和一个TextView

<?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="horizontal" >

    <ImageView
      android:id="@+id/imageView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/a" />

    <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="TextView" />

</LinearLayout>


myslidingdrawer.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" >

    <SlidingDrawer
      android:id="@+id/slidingDrawer1"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:content="@+id/content"
      android:handle="@+id/handle" >

      <Button
            android:id="@+id/handle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Handle" />

      <LinearLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <ListView
                android:id="@+id/slidingDrawerListView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1">
            </ListView>
      </LinearLayout>
    </SlidingDrawer>

</LinearLayout>


AndroidMainfest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.newer.p0202"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name" >
      <activity
            android:label="@string/app_name"
            android:name=".P0202Activity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
      </activity>
      <activity android:name="MyListView"></activity>
      <activity android:name="MySlidingDrawer"></activity>
      <activity android:name="MyViewFlipper"></activity>
    </application>

</manifest>

java代码

P0202Activity类
主页面继承Activity实现OnClickListenere

public class P0202Activity extends Activity implements OnClickListener{
   public void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstenceState);
          setContentView(R.layout.main);

          //启动ListView Activity按钮
          Button btnListView = (Button)findViewById(R.id.listView);
          btnListView.setOnClickListener(this);

         
   }
   public void onClick(View v){
          switch(v.getId()){
          case R.id.listView:
               Intent intent = new Intent(this,MyListView.class);
               startActivity(intent);
               break;
          case R.id.btnSlidingdrawer:
               Intent intent2 = new Intent(this,MySlidingDrawer.class);
               startActivity(intent2);
               break;
          default:
               break;
          }
   }
}



MyListView类继承Activity

public class MyListView extends Activity{
   protected void onCreate(Bundle savedInstanceState)
         super.onCreate(savedInstanceState);
         setContentView(R.layout.mylistview);

         //模拟数据
         List<DataBean> dataList = new ArrayList<DataBean>();
         for(int idx=0;idx<20;idx++){
             //具体的每一条数据
             DataBean dataBean = new DataBean();
             dataBean.imageId = R.drawable.a;
             dataBean.imageDescription = "具体的说明"+idx;
             dataList.add(dataBean);
         }

         MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
         //得到listview控件
         ListView listView = (ListView)findViewById(R.id.listView1);
         //设置适配器,让listview根据适配器来显示数据
         listView.setAdapter(myListViewAdapter);         
   }
}


创建一个类DataBean

public class DataBean{
    public int imageId;
    public String imageDescription;
}



创建一个类MyHandler

public class MyHandler{
    public ImageView imageView;
    public TextView textView;
}



适配器类:
MyListViewAdapter类继承BaseAdapter

public class MyListViewAdapter extends BaseAdapterP{
    public int getCount(){
      return dataList.size();
    }
    public Object getItem(int position){
      return null;
    }
    public long getItemId(int position){
      return 0;
    }
    public View getView(int position, View convertView, ViewGroup parent){
      //三种方式
      //LayoutInflater.from(context);
      //(LinearLayout)activity.getlayoutInflater();
      //LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

      //样式膨胀(要从layout资源中动态的读取一个XML文档)
      //效率差的方式
      //LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      //LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
      //得到当前线性布局的两个控件
      //ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
      //TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
      //imageView.setImageResource(dataList.get(position).imageId);
      //textView.setText(dataList.get(position).imageDescription);
      //return lineanLayout;


      //效率高的方式
      MyHandler myHandler = new MyHandler();
      if(null == convertView){//刚开始第一次convertView里面是没有对象
            LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
            //得到当前线性布局的两个控件
            ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
            TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
            myHandler.imageView = imageView;
            myHandler.textView = textView;
      
            convertView = lineanLayout;

      }
      myHandler = (MyHandler)convertView.getTag();
      myHandler.imageView.setImageResoure(dataList.get(position).imageId);
      myHandler.textView.setText(dataList.get(position).imageDescription);
      return convertView;
    }
}





MySlidingDrawer类继承Activity

public class MySlidingDrawer extends Activity{
   protected void onCreate(Bundler savedInstanceState){
          super.onCreate(savedInstanceState);
          setContentView(R.layout.myslidingdrawer);

          //模拟数据
          List<DataBean> dataList = new ArrayList<DataBean>();
          for(int idx=0;idx<20;idx++){
            //具体的每一条数据
            DataBean dataBean = new DataBean();
            dataBean.imageId = R.drawable.a;
            dataBean.imageDescription = "具体的说明"+idx;
            dataList.add(dataBean);
          }
          MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
          ListView listView = (ListView)findViewById(R.id.slidingDrawerListView);
          listView.setAdapter(myListViewAdapter);
   }
}
页: [1]
查看完整版本: ListView和SlidingDrawer