ListView的一些使用方式

来源:互联网 发布:java nio io 区别 编辑:程序博客网 时间:2024/06/05 15:55

直接上代码

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.Harris.listview1activity.ListView1Activity" >    <TextView        android:id="@+id/topText"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="最喜欢的球类运动"         android:textSize="20sp"/>        <ListView         android:id="@+id/lstPrefer"        android:layout_width="match_parent"        android:layout_height="wrap_content"       />    <TextView         android:id="@+id/txtResult"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="显示消息"        android:textSize="20sp"        />    <Button         android:id="@+id/btnDo"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="选择"        /></LinearLayout>


Java代码

package com.Harris.listview1activity;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;public class ListView1Activity extends Activity {private ListView lstView;private TextView txtResult,topText;String[] Balls ={"篮球","足球","棒球","橄榄球","其他"};private Button btnDo;private int count;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);topText =(TextView) findViewById(R.id.topText);lstView = (ListView) findViewById(R.id.lstPrefer);txtResult = (TextView) findViewById(R.id.txtResult);btnDo = (Button) findViewById(R.id.btnDo);//Eclipse自动添加的ArrayAdater看到参数为(Context context,int resources) //这句话是创建ArrayAdapter并设置样式ArrayAdapter<String> adapterBalls = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice,Balls);lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//以下设置ListView的数据源lstView.setAdapter(adapterBalls);//获取当前选择的项目数,接下来的监听器循环要用count = adapterBalls.getCount();//绑定监听器啦啦啦lstView.setOnItemClickListener(new lstViewListener());btnDo.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {String selAll="";for(int p =0;p<count;p++){if(lstView.isItemChecked(p))selAll+= Balls[p]+"";}txtResult.setText("我最喜欢的球类运动是"+selAll);}});}//下面就是制作触发动作的监听器这一类的老生常谈了class lstViewListener implements OnItemClickListener{@Overridepublic void onItemClick(AdapterView<?> parent, View v, int position,long id) {String sel = parent.getItemAtPosition(position).toString();if(lstView.isItemChecked(position)){topText.setText("目前选择"+sel);}else{topText.setText("目前选择 ");}}}}

以上就是ListView的复选框设置以及同时使用OnItemSelectedListener和OnClickListener监听以及使用内部类和匿名内部类的方法,哈哈。

------------------------------------------------------------------------------分割线君-------------------------------------------------------------------------------------------

接下来就是对于listView的私人订制了,通过在MyAdapter中生成一个LayoutInflater,

使用预先在res/layout文件夹里面写好的fruitlayout.xml(这里一个大写字母都不行!!!,不是名字开头也不行!!!

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.Harris.ch07_ex1.MainActivity" >    <Button         android:id="@+id/addButton"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="加入购物车"        android:layout_below="@id/action_bar_title"        />    <TextView        android:id="@+id/txtResult"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="已选择的物品"         android:layout_below="@id/addButton"        />    <ListView         android:id="@+id/lstFruit"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/txtResult"        /></RelativeLayout>

fruitlayout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.Harris.ch07_ex1.MainActivity" >   <ImageView        android:id="@+id/imgLogo"       android:layout_width="50sp"       android:layout_height="50sp"       android:src="@drawable/f014"       android:layout_margin="10sp"       />   <LinearLayout        android:id="@+id/LinerLayout2"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:orientation="vertical">       <TextView           android:id="@+id/txtname"           android:layout_width="match_parent"           android:layout_height="wrap_content"           android:text="第一行文字"           android:textSize="24sp"           android:textColor="#ff00ff"           android:layout_marginLeft="10sp"           android:layout_marginTop="5sp"           />       <TextViewandroid:id="@+id/txtengname"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="第二行文字"        android:textSize="16sp"android:textColor="#00ff00"android:layout_marginLeft="10sp"              />                     </LinearLayout></LinearLayout>

Java代码

package com.Harris.ch07_ex1;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {private Button addButton;private ListView lstFruit; private TextView txtResult;int[] resIds = new int[]{R.drawable.f014,R.drawable.f015,R.drawable.f016,R.drawable.f017,R.drawable.f018};private String[] Fruits = {"苹果","香蕉","葡萄","香瓜"};private String[] engnames={"apple","banana","grape","pineapple"};private int count;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);addButton= (Button) findViewById(R.id.addButton);lstFruit = (ListView) findViewById(R.id.lstFruit);txtResult = (TextView) findViewById(R.id.txtResult);lstFruit.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);lstFruit.setAdapter(new MyAdapter(this));addButton.setOnClickListener(new addListener());lstFruit.setOnItemClickListener(new lstFruitListener());}class addListener implements OnClickListener{int count = Fruits.length;@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString selAll="";for(int p=0;p<count;p++){if(lstFruit.isItemChecked(p))selAll+=Fruits[p]+"";}txtResult.setText(selAll);}}class lstFruitListener implements OnItemClickListener{@Overridepublic void onItemClick(AdapterView<?> parent, View v, int position,long id) {if(lstFruit.isItemChecked(position)){String sel=parent.getItemAtPosition(position).toString();txtResult.setText(sel);}else{txtResult.setText(" ");}}}public class MyAdapter extends BaseAdapter{//生成一个LayoutInflater对象,就靠它提取我们之前写的xml构建一个View啦。private LayoutInflater myInflater;//继承了BaseAdapter就是有这么多的方法需要复写,而且都不是空白意义的public  MyAdapter(Context c) {myInflater= LayoutInflater.from(c);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Fruits.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn Fruits[position];}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Override//几个参数,positon是用作数组下标,convertView是新构建的View,Groupparent暂时还不清楚哈public View getView(int position, View convertView, ViewGroup Groupparent) {convertView = myInflater.inflate(R.layout.fruitlayout,null);ImageView imgLogo = (ImageView) convertView.findViewById(R.id.imgLogo);TextView txtname = (TextView) convertView.findViewById(R.id.txtname);TextView txtengname = (TextView) convertView.findViewById(R.id.txtengname);imgLogo.setImageResource(resIds[position]);txtname.setText(Fruits[position]);txtengname.setText(engnames[position]);return convertView;}}}

注意先前要在resource文件夹里面放几张照片,谢谢。

这个程序只是我照着书上的代码敲下来的,完全只是为了学习之前让人头疼不已的ListView的问题才写的,先留在这里,改天回来再优化。

完事。



0 0
原创粉丝点击