原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0615/543.html
	媒介:前段光阴想在fragment中做出一个ListView列表,但是一直都是UI的闪退,让我一直不晓得怎么办,非常忧愁,但是后来才发现了一个新的东西叫做ListFragment,以是这次要紧是讲一下若何应用ListFragment确立一个简略的列表
	首先必要新建一个fragment援用ListFragment,以及这个fragment的结构文件,这个结构用于包容由adapter适配好的view,叫做fragment_main.xml;
	<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <!-- ListFragment对应的android:id值固定为"@id/android:list" -->    <ListView        android:id="@id/android:list"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:drawSelectorOnTop="false"        />
	</LinearLayout>
	新建一个list_main.xml连结adapter适配每一个view
	<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layout_margin="16dp">
	    <TextView        android:id="@+id/list_food"        android:layout_width="match_parent"        android:layout_height="wrap_content" />
	</LinearLayout>
	好现在我们就滥觞编纂java代码,首先新建一个简略的一个Food类
	public class Food {    private String mName;
	    public Food(String name){        mName = name;
	    }    public String getName() {        return mName;
	    }    public void setName(String name) {        mName = name;
	    }
	}
	而后滥觞新建ArrayListAdapter继承ArrayAdapter,这内部必要重写一个getView要领
	但是在重写之前,现办理这个有一个必须重写的要领,并用一个int来存储一下这个资源文件,这里援用的是一个XML文件,必要背面的fragment传入这个数据,现在我们先在这里做汲取
	重写
	private int resourceId;
	public ListMainAdapter(@NonNull Context context, int resource, @NonNull List objects) {    super(context, resource, objects);
	    resourceId = resource;
	}
	    而后即是重写getView要领,这里我就不写了,干脆列出全部的代码
	public class ListMainAdapter extends ArrayAdapter<Food> {    private int resourceId;    public ListMainAdapter(@NonNull Context context, int resource, @NonNull List<Food> objects) {        super(context, resource, objects);        resourceId = resource;
	    }    @NonNull    @Override    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
	        Food food = getItem(position);//获取food工具        View view = LayoutInflater.from(getContext()).inflate(resourceId,null);
	        TextView textView = view.findViewById(R.id.list_food);
	        textView.setText(food.getName());        return view;
	    }
	}
	底下必要做的即是MainFragment.java的书写,感受照旧很容易看懂的,要紧即是重写两个要领就好。
	public class MainFragment extends ListFragment {
	    List<Food> mFoodList;    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mFoodList = new ArrayList<>();
	        initFood();
	        ListMainAdapter adapter = new ListMainAdapter(getContext(),R.layout.list_main,mFoodList);        this.setListAdapter(adapter);
	    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment_main,container,false);
	    }    private void initFood(){        mFoodList.add(new Food("apple"));        mFoodList.add(new Food("banana"));        mFoodList.add(new Food("hot"));
	    }
	}
	末了的末了即是写MainActivity的文件了以及activity_main.xml
	public class MainActivity extends AppCompatActivity {    MainFragment mMainFragment;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main);        mMainFragment = new MainFragment();
	        getSupportFragmentManager().beginTransaction().add(R.id.main_container,mMainFragment).co妹妹it();
	    }
	}
	<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/main_container"    android:layout_width="match_parent"    android:layout_height="match_parent">
	</FrameLayout>
	梗概历程即是这样,可能少许表白不是很准确,往后会逐步变动完善,但是代码少许片面写的对照简略,没有经由优化,但优化上头和普通的差未几,这里就但是多写了,要是不行看懂何处可以留言一下,列表这方面照旧对照保举recycleview,大家可以去打听少许,欢迎交换
上篇:上一篇:Android 获取唯一机械码的代码
下篇:下一篇:Android 好用的下拉控件Spinner

