***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;
}
}