• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

在fragment中援用ListView

原创内容,转载请注明原文网址: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