注:本次内容是模拟一个游戏下载的UI
运行结果如下:
首先新建一个XML 内容如下
<ListView android:id="@+id/lv_main_view" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView>
在新建一个XML内容如下
<--图片-->
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image_item_iv"/><--文本--> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/text_item_tv"/><--按钮--> <Button android:id="@+id/button_item_but" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载"/>//此java类用于优化public class entity { public ImageView iv; public Button bu; public TextView tv; }新建一个Java类//图片idint image[]={R.drawable.bird,R.drawable.cat,R.drawable.dog,R.drawable.fox,R.drawable.cow}; String data[]={"鸟人","Tomcat","单身狗","狐狸精","大黑牛"}; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv_main_view);lv.setAdapter(new AdapterDiy());//点击事件 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "进入"+data[position%data.length], Toast.LENGTH_SHORT).show(); } }); }//自定义适配器 重写BaseAdapter的方法 最主要的方法 getCount 和 getView class AdapterDiy extends BaseAdapter{//假设有10000条数据 并且要求每循环5次数据相同 @Override public int getCount() { return 10000; } @Override public Object getItem(int position) { return data[position%data.length]; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View view, ViewGroup parent) {//注:代码中 position%data.length 是去余数
//布局文件转成View if(view==null){ view=LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_item,null); //实例化entity类 调用entity的方法entity en=new entity();
//赋值en.iv= (ImageView) view.findViewById(R.id.image_item_iv); en.tv=(TextView)view.findViewById(R.id.text_item_tv); en.bu=(Button) view.findViewById(R.id.button_item_but); view.setTag(en); } entity en= (entity) view.getTag();en.iv.setImageResource(image[position%data.length]); en.tv.setText(data[position%data.length]);//点击事件 en.bu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"正在下载"+data[position%data.length], Toast.LENGTH_SHORT).show(); } }); return view; } }