1.ListView的基本用法
效果:
可以上下滑动,点击下载可以弹出吐司框
布局只需要使用这个控件设个id然后用java代码使用
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context="com.example.android_08.MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv_main_list"
>
</ListView>
</LinearLayout>
java代码:需要先写一个属性类
package com.example.android_08;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
/**
* @author Zking-Snail
* @time 2017/6/9 15:45
* @Version ${REV}
*/
public class ItemTag {
public ImageView imageView;
public TextView textView;
public Button button;
}
package com.example.android_08;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private int images[]={R.drawable.bird,R.drawable.cat,R.drawable.chicken,R.drawable.cow,R.drawable.dog};
private String titles[]={"鸟","猫","鸡","牛","狗"};
private ListView lv_main_list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_main_list = (ListView) findViewById(R.id.lv_main_list);
lv_main_list.setAdapter(new MyAdapter());
//给ListView设置点击事件
lv_main_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "跳转到"+titles[i%titles.length]+"页面", Toast.LENGTH_SHORT).show();
}
});
}
//OOM OutOfMemory 内存溢出
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return 10000;
}
@Override
public Object getItem(int i) {
return titles[i%titles.length];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
Log.i("test","i="+i+" "+view);
//把布局文件转成View
if(view==null){
view= getLayoutInflater().inflate(R.layout.item_listview,null);
ItemTag itemTag=new ItemTag();
itemTag.imageView= (ImageView) view.findViewById(R.id.iv_item_listview_icon);
itemTag.textView= (TextView) view.findViewById(R.id.tv_item_listview_title);
itemTag.button= (Button) view.findViewById(R.id.btn_item_listview_download);
view.setTag(itemTag);
}
ItemTag itemtag= (ItemTag) view.getTag();
//设值
itemtag.imageView.setImageResource(images[i%titles.length]);
itemtag.textView.setText(titles[i%titles.length]+i);
//给按钮设置点击事件
itemtag.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "正在下载"+titles[i%titles.length], Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
}