***ListView初步基础***
在底部增加视图addFooterView(view);
最简单的listView点击每个item跳转界面
mListView = (ListView) findViewById(R.id.list_view_demo);
ArrayList<ActivityItem> activityItems = new ArrayList<>();
activityItems.add(new ActivityItem("1. 应用列表", AppListActivity.class));
activityItems.add(new ActivityItem("2. 异步请求数据列表", RequestDataActivity.class));
activityItems.add(new ActivityItem("3. 模仿IM聊天布局", ChatActivity.class));
mListView.setAdapter(new MainListAdapter(MainActivity.this,activityItems ));
getinfo方法
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
return getPackageManager().queryIntentActivities(mainIntent, 0);
在adapter里面获取当前视图
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View headerView = layoutInflater.inflate(R.layout.header_list_demo, null);
viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);
在adapter里面重复利用ViewHolder
if(convertView == null){
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.item_demo_list, null);
// 获取控件
viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);
viewHolder.avatarImageView = (ImageView)convertView.findViewById(R.id.icon_image_view);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
获取应用名称图片
viewHolder.nameTextView.setText(mInfos.get(position).activityInfo.loadLabel(mContext.getPackageManager()));
viewHolder.avatarImageView.setImageDrawable(mInfos.get(position).activityInfo.loadIcon(mContext.getPackageManager()));
在getView里面设置每个item的点击事件
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ResolveInfo info = mInfos.get(position);
//该应用的包名
String pkg = info.activityInfo.packageName;
//应用的主activity类
String cls = info.activityInfo.name;
ComponentName componet = new ComponentName(pkg, cls);
Intent intent = new Intent();
intent.setComponent(componet);
startActivity(intent);
}
});
全部代码
public class AppListActivity extends AppCompatActivity{
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view_demo);
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View headerView = layoutInflater.inflate(R.layout.header_list_demo, null);
mListView.addHeaderView(headerView);
List<ResolveInfo> infos = getAppInfos();
mListView.setAdapter(new AppListAdapter(this, infos));
}
private List<ResolveInfo> getAppInfos() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
return getPackageManager().queryIntentActivities(mainIntent, 0);
}
public class AppListAdapter extends BaseAdapter{
private Context mContext;
private List<ResolveInfo> mInfos;
public AppListAdapter(Context context, List<ResolveInfo> infos) {
mContext = context;
mInfos = infos;
}
@Override
public int getCount() {
return mInfos.size();
}
@Override
public Object getItem(int position) {
return mInfos.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.item_demo_list, null);
// 获取控件
viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);
viewHolder.avatarImageView = (ImageView) convertView.findViewById(R.id.icon_image_view);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 和数据之间进行绑定
viewHolder.nameTextView.setText(mInfos.get(position).activityInfo.loadLabel(mContext.getPackageManager()));
viewHolder.avatarImageView.setImageDrawable(mInfos.get(position).activityInfo.loadIcon(mContext.getPackageManager()));
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ResolveInfo info = mInfos.get(position);
//该应用的包名
String pkg = info.activityInfo.packageName;
//应用的主activity类
String cls = info.activityInfo.name;
ComponentName componet = new ComponentName(pkg, cls);
Intent intent = new Intent();
intent.setComponent(componet);
startActivity(intent);
}
});
return convertView;
}
class ViewHolder {
ImageView avatarImageView;
TextView nameTextView;
}
}