ListFragment,Fragment+ListView,ListActivity,Activity+ListView方法实现listview效果

来源:互联网 发布:四川大学网络教育官网 编辑:程序博客网 时间:2024/05/18 01:57

怪我初学,总是会混了几种使用方法的步骤,所以我还是记录一下,不然总是不能一次编译通过,心里很难受。

一,ListFragment中实现listview效果

准备:

1,数据dataList

2,listview的item布局文件,这里命名为item2_listview.xml

步骤:

1,定义一个继承ArrayAdapter的Adapter

2,使用setListAdapter配置listview

代码:

package com.marttinli.qromstudy1_1;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;import com.tencent.qrom.support.v4.app.ListFragment;import com.tencent.qrom.widget.ListView;public class ListFragmentCheckMode extends ListFragment {String[] datas;@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);datas = getResources().getStringArray(R.array.date);setListAdapter(new MyAdapter());}private class MyAdapter extends ArrayAdapter<String>{public MyAdapter() {// TODO Auto-generated constructor stubsuper(getActivity(), 0, datas);}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif (convertView==null) {convertView = getActivity().getLayoutInflater().inflate(R.layout.item1_listview, null);}TextView tView = (TextView)convertView.findViewById(R.id.textView1);tView.setText(datas[position]);return convertView;}}}



二,Fragment+ListView实现listview效果

准备:

1,fragment的布局文件,这里命名为fragment_section_dummy.xml,xml布局至少要包涵一个ListView控件

2,数据dataList

3,listview的item布局文件,这里命名为item2_listview.xml

步骤:

1,定义Adapter

2,获取listview,并使用setAdapter配置adapter

布局文件fragment_section_dummy.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <com.tencent.qrom.widget.ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:drawSelectorOnTop="false" /></FrameLayout>
代码(多写了一些代码,我是直接从项目中copy过来的,但是应该不影响理解,请自动忽略):

package com.marttinli.qromstudy1_1;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import android.R.integer;import android.app.Activity;import android.app.ListActivity;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.tencent.qrom.support.v4.app.Fragment;import com.tencent.qrom.widget.ListView;import com.tencent.qrom.widget.Toast;public class MyListFragment extends Fragment {List<PackageInfo> list = new ArrayList<>();;onItemSelectedListener mListener;PackageManager packageManager;public static final int FILTER_ALL_APP = 0; // 所有应用程序public static final int FILTER_SYSTEM_APP = 1; // 系统程序public static final int FILTER_THIRD_APP = 2; // 第三方应用程序public static final int FILTER_SDCARD_APP = 3; // 安装在SDCard的应用程序@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);try {mListener = (onItemSelectedListener) activity;} catch (ClassCastException e) {throw new ClassCastException(activity.toString()+ " must implement onItemSelectedListener");}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_section_dummy,container, false);packageManager = getActivity().getPackageManager();List<PackageInfo> mlist = packageManager.getInstalledPackages(0);list.addAll(getApplications(mlist, FILTER_THIRD_APP));ListView listView = (ListView) rootView.findViewById(R.id.listview);listView.setAdapter(new MyAdapter());return rootView;}private List<PackageInfo> getApplications(List<PackageInfo> mlist, int flag) {List<PackageInfo> l = new ArrayList<PackageInfo>();switch (flag) {case FILTER_ALL_APP:l.addAll(mlist);break;case FILTER_SYSTEM_APP:for (PackageInfo packageInfo : mlist) {if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {l.add(packageInfo);}}break;case FILTER_THIRD_APP:for (PackageInfo packageInfo : mlist) {if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {l.add(packageInfo);}// 本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了else if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {l.add(packageInfo);}}break;case FILTER_SDCARD_APP:for (PackageInfo packageInfo : mlist) {if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {l.add(packageInfo);}}break;default:break;}return l;}public interface onItemSelectedListener {public void onItemSelected(int position);}public void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubmListener.onItemSelected(position);}class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int arg0, View convertView, ViewGroup arg2) {Holder holder;if (null == convertView) {holder = new Holder();convertView = (LinearLayout) LayoutInflater.from(getActivity()).inflate(R.layout.item2_listview, null);holder.iconView = (ImageView) convertView.findViewById(R.id.imageView1);holder.textView = (TextView) convertView.findViewById(R.id.textView1);holder.button = (Button) convertView.findViewById(R.id.button1);convertView.setTag(holder);} else {holder = (Holder) convertView.getTag();}final PackageInfo app = list.get(arg0);holder.iconView.setImageDrawable(packageManager.getApplicationIcon(app.applicationInfo));holder.textView.setText(packageManager.getApplicationLabel(app.applicationInfo).toString());holder.button.setText("打开");holder.button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = packageManager.getLaunchIntentForPackage(app.packageName);getActivity().startActivity(intent);}});return convertView;}class Holder {public ImageView iconView;public TextView textView;public Button button;}}}



三,ListActivity实现listview效果

准备:

1,数据datas

2,listview的item布局文件

3,在Manifest.xml中配置Activity

步骤:

1,定义一个继承ArrayAdapter的Adapter

2,使用setListAdapter配置listview

代码:

package com.marttinli.qromstudy1_1;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;public class ListActivityDemo extends ListActivity {String[] dataList;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);dataList = getResources().getStringArray(R.array.date);setListAdapter(new DemoAdapter(dataList));}private class DemoAdapter extends ArrayAdapter<String> {public DemoAdapter(String[] dataList) {// TODO Auto-generated constructor stubsuper(ListActivityDemo.this, 0, dataList);}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif (convertView == null) {convertView = getLayoutInflater().inflate(R.layout.item2_listview, null);}TextView tv = (TextView) convertView.findViewById(R.id.textView1);tv.setText(dataList[position]);return convertView;}}}


四,Activity+ListView实现listview效果

这个就跟Fragment+ListView和ListActivity综合,就不多说了,以后有空在写吧



0 0